|
# Smolagents Chat Server Demo |
|
|
|
This is a simple web server that provides a chat interface for interacting with an AI code agent powered by `smolagents` and the Qwen2.5-Coder-32B-Instruct model, enhanced with MCP (Model Control Protocol) tools. |
|
|
|
## Features |
|
|
|
- Web-based chat interface |
|
- AI code agent powered by Qwen2.5-Coder |
|
- Integration with MCP tools through MCPClient |
|
- Asynchronous request handling |
|
- Clean, responsive UI |
|
- Graceful shutdown handling |
|
|
|
## Requirements |
|
|
|
- Python 3.8+ |
|
- Starlette |
|
- AnyIO |
|
- Smolagents with MCP support |
|
|
|
## Installation |
|
|
|
1. Install the required packages: |
|
|
|
```bash |
|
pip install starlette anyio smolagents[mcp] uvicorn |
|
``` |
|
|
|
2. Optional: If you want to use a specific model, you may need additional dependencies. |
|
|
|
## Usage |
|
|
|
1. Run the server: |
|
|
|
```bash |
|
uvicorn examples.server.main:app --reload |
|
``` |
|
|
|
2. Open your browser and navigate to `http://localhost:8000` |
|
|
|
3. Interact with the AI code agent through the chat interface |
|
|
|
## How It Works |
|
|
|
The server consists of two main routes: |
|
- `/` - Serves the HTML page with the chat interface |
|
- `/chat` - API endpoint that processes messages and returns responses |
|
|
|
The server integrates with MCP tools through the following components: |
|
|
|
1. MCPClient Configuration: |
|
```python |
|
mcp_server_parameters = { |
|
"url": "https://evalstate-hf-mcp-server.hf.space/mcp", |
|
"transport": "streamable-http", |
|
} |
|
mcp_client = MCPClient(server_parameters=mcp_server_parameters) |
|
``` |
|
|
|
2. CodeAgent with MCP Tools: |
|
```python |
|
agent = CodeAgent( |
|
model=InferenceClientModel(model_id="Qwen/Qwen2.5-Coder-32B-Instruct"), |
|
tools=mcp_client.get_tools(), |
|
) |
|
``` |
|
|
|
When a user sends a message: |
|
1. The message is sent to the `/chat` endpoint |
|
2. The server runs the AI code agent in a separate thread |
|
3. The agent processes the message using MCP tools |
|
4. The agent's response is returned to the client and displayed in the chat |
|
|
|
The server also includes a shutdown handler that properly disconnects the MCP client when the server stops: |
|
```python |
|
async def shutdown(): |
|
mcp_client.disconnect() |
|
``` |
|
|
|
## Customization |
|
|
|
You can modify the `CodeAgent` configuration by changing the model or MCP server parameters. For example: |
|
|
|
```python |
|
# Custom MCP server |
|
mcp_server_parameters = { |
|
"url": "your-mcp-server-url", |
|
"transport": "your-transport-method", |
|
} |
|
|
|
# Custom agent configuration |
|
agent = CodeAgent( |
|
model=InferenceClientModel(model_id="your-preferred-model"), |
|
tools=mcp_client.get_tools(), |
|
) |
|
``` |
|
|