82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# Qwen 3 Agent Architectural spike.
|
|
|
|
This project demonstrates how to use the `qwen-agent` library to interact with a Qwen 3 language model, potentially leveraging MLX for local execution and incorporating tools like web search.
|
|
|
|
## Description
|
|
|
|
The core example (`agentic_search.py`) sets up an AI assistant powered by a specified Qwen 3 model (e.g., `qwen3:0.6B` running locally via Ollama). It showcases how to:
|
|
* Configure the connection to the language model (local or API-based).
|
|
* Define and integrate tools (like `code_interpreter` and MCP-based tools like DuckDuckGo search).
|
|
* Run the agent with a user query and stream the responses.
|
|
* Example prompt included - it was difficult to get the model with agents to also output the hyperlinks.
|
|
|
|
The smaller `try6b.py` is meant to test that qwen models work locally. 0.6B is a very small model, so easy to download, and was actually a a lot of fun to use.
|
|
Event working with tools, when used with `agentic_search.py` worked, up to a point.
|
|
|
|
## Prerequisites
|
|
|
|
* Python 3.13 or higher
|
|
* `uv` package manager installed.
|
|
* A running Qwen 3 model endpoint (like one served by Ollama at `http://localhost:11434`) or appropriate API keys if using a hosted service.
|
|
* Optional: `mise` for managing development tools (like Node.js, though its specific use in this Python project isn't detailed in the provided context).
|
|
|
|
## Installation
|
|
|
|
1. **Clone the repository:**
|
|
```bash
|
|
git clone <your-repository-url>
|
|
cd qwen3
|
|
```
|
|
|
|
2. **Set up a virtual environment (recommended):**
|
|
```bash
|
|
# Using Python's built-in venv
|
|
python -m venv .venv
|
|
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
|
|
|
|
# Or using uv to create and activate
|
|
uv venv .venv
|
|
source .venv/bin/activate # On Windows use `.venv\Scripts\activate`
|
|
```
|
|
|
|
3. **Install dependencies using `uv`:**
|
|
The project dependencies are listed in `pyproject.toml`. Install the project and its dependencies:
|
|
```bash
|
|
uv pip install .
|
|
```
|
|
Alternatively, install dependencies directly from the list:
|
|
```bash
|
|
uv pip install mcp>=1.6.0 mlx>=0.25.1 mlx-lm>=0.24.0 python-dateutil>=2.9.0.post0 python-dotenv>=1.1.0 "qwen-agent[code-interpreter]>=0.0.20"
|
|
```
|
|
|
|
## Usage
|
|
|
|
1. **Configure the LLM:**
|
|
* Modify `agentic_search.py` to point to your Qwen 3 model endpoint or provide necessary API keys in the `llm_cfg` dictionary. The example is currently set up for a local Ollama endpoint.
|
|
|
|
2. **Run the agent script:**
|
|
```bash
|
|
python agentic_search.py
|
|
```
|
|
This will execute the predefined query in the script, run the agent, print progress dots (`.`) for each response chunk, and finally output the full structured response and the extracted content.
|
|
|
|
## Dependencies
|
|
|
|
Key Python libraries used:
|
|
|
|
* `qwen-agent`: For creating and managing the AI agent.
|
|
* `mlx` / `mlx-lm`: Likely used for efficient model inference, especially on Apple Silicon.
|
|
* `mcp`: For integrating external tools via the Multi-Agent Collaboration Protocol.
|
|
* `python-dotenv`: For managing environment variables (e.g., API keys).
|
|
* `rich`: For beautiful terminal formatting and progress indicators.
|
|
|
|
See `pyproject.toml` for the full list of dependencies.
|
|
|
|
## Contributing
|
|
|
|
This an architectural spike, I welcome your feedback through `qwan.eu/contact`.
|
|
|
|
## License
|
|
|
|
Apache 2.0
|