278 lines
5.3 KiB
Markdown
278 lines
5.3 KiB
Markdown
# Qwen Provider Setup Guide
|
|
|
|
## Overview
|
|
|
|
QwenClaw uses **Qwen** as the default AI provider. This guide shows you how to configure and use Qwen with the Rig service.
|
|
|
|
---
|
|
|
|
## Quick Start
|
|
|
|
### 1. Get Your Qwen API Key
|
|
|
|
1. Visit: https://platform.qwen.ai/
|
|
2. Sign up or log in
|
|
3. Go to **API Keys** section
|
|
4. Click **Create New API Key**
|
|
5. Copy your key (starts with `sk-...`)
|
|
|
|
### 2. Configure Rig Service
|
|
|
|
Create `.env` file in `rig-service/`:
|
|
|
|
```bash
|
|
cd rig-service
|
|
cp .env.example .env
|
|
```
|
|
|
|
Edit `.env`:
|
|
|
|
```env
|
|
# Qwen API Configuration (REQUIRED)
|
|
QWEN_API_KEY=sk-your-actual-key-here
|
|
QWEN_BASE_URL=https://api.qwen.ai/v1
|
|
|
|
# Defaults (Qwen is default for QwenClaw)
|
|
RIG_DEFAULT_PROVIDER=qwen
|
|
RIG_DEFAULT_MODEL=qwen-plus
|
|
|
|
# Server settings
|
|
RIG_HOST=127.0.0.1
|
|
RIG_PORT=8080
|
|
```
|
|
|
|
### 3. Start Rig Service
|
|
|
|
```bash
|
|
# Build
|
|
cargo build --release
|
|
|
|
# Start
|
|
cargo run --release
|
|
```
|
|
|
|
### 4. Verify Connection
|
|
|
|
```bash
|
|
curl http://127.0.0.1:8080/health
|
|
# Should return: {"status":"ok","service":"qwenclaw-rig"}
|
|
```
|
|
|
|
---
|
|
|
|
## Available Qwen Models
|
|
|
|
| Model | Description | Use Case |
|
|
|-------|-------------|----------|
|
|
| `qwen-plus` | **Default** - Balanced performance | General tasks |
|
|
| `qwen-max` | Most powerful | Complex reasoning |
|
|
| `qwen-turbo` | Fastest, cheapest | Simple tasks |
|
|
| `qwen-long` | Long context (256K) | Document analysis |
|
|
|
|
---
|
|
|
|
## Using Qwen with Rig
|
|
|
|
### TypeScript Client
|
|
|
|
```typescript
|
|
import { initRigClient } from "./src/rig";
|
|
|
|
const rig = initRigClient();
|
|
|
|
// Create agent with Qwen
|
|
const sessionId = await rig.createAgent({
|
|
name: "assistant",
|
|
preamble: "You are a helpful assistant.",
|
|
provider: "qwen", // Use Qwen
|
|
model: "qwen-plus", // Qwen model
|
|
});
|
|
|
|
// Execute prompt
|
|
const result = await rig.executePrompt(sessionId, "Hello!");
|
|
console.log(result);
|
|
```
|
|
|
|
### HTTP API
|
|
|
|
```bash
|
|
# Create agent with Qwen
|
|
curl -X POST http://127.0.0.1:8080/api/agents \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "assistant",
|
|
"preamble": "You are helpful.",
|
|
"provider": "qwen",
|
|
"model": "qwen-plus"
|
|
}'
|
|
|
|
# Execute prompt
|
|
curl -X POST http://127.0.0.1:8080/api/agents/{SESSION_ID}/prompt \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"prompt": "Hello!"}'
|
|
```
|
|
|
|
### Multi-Agent Council with Qwen
|
|
|
|
```typescript
|
|
const councilId = await rig.createCouncil("Research Team", [
|
|
{
|
|
name: "researcher",
|
|
preamble: "You research thoroughly.",
|
|
provider: "qwen",
|
|
model: "qwen-max", // Use most powerful for research
|
|
},
|
|
{
|
|
name: "writer",
|
|
preamble: "You write clearly.",
|
|
provider: "qwen",
|
|
model: "qwen-plus", // Balanced for writing
|
|
},
|
|
]);
|
|
|
|
const result = await rig.executeCouncil(councilId, "Write a report");
|
|
```
|
|
|
|
---
|
|
|
|
## Alternative Providers
|
|
|
|
### OpenAI (Fallback)
|
|
|
|
```env
|
|
# In rig-service/.env
|
|
OPENAI_API_KEY=sk-...
|
|
RIG_DEFAULT_PROVIDER=openai
|
|
RIG_DEFAULT_MODEL=gpt-4o
|
|
```
|
|
|
|
### Anthropic Claude
|
|
|
|
```env
|
|
# In rig-service/.env
|
|
ANTHROPIC_API_KEY=sk-ant-...
|
|
RIG_DEFAULT_PROVIDER=anthropic
|
|
RIG_DEFAULT_MODEL=claude-3-5-sonnet
|
|
```
|
|
|
|
### Ollama (Local)
|
|
|
|
```env
|
|
# In rig-service/.env
|
|
RIG_DEFAULT_PROVIDER=ollama
|
|
RIG_DEFAULT_MODEL=qwen2.5:7b
|
|
# No API key needed - runs locally
|
|
```
|
|
|
|
---
|
|
|
|
## Troubleshooting
|
|
|
|
### "QWEN_API_KEY not set"
|
|
|
|
**Error:**
|
|
```
|
|
Error: QWEN_API_KEY not set. Get it from https://platform.qwen.ai
|
|
```
|
|
|
|
**Solution:**
|
|
1. Get API key from https://platform.qwen.ai
|
|
2. Add to `rig-service/.env`:
|
|
```env
|
|
QWEN_API_KEY=sk-your-key
|
|
```
|
|
3. Restart Rig service
|
|
|
|
### "Invalid API key"
|
|
|
|
**Error:**
|
|
```
|
|
Rig prompt execution failed: Invalid API key
|
|
```
|
|
|
|
**Solution:**
|
|
1. Verify API key is correct (no extra spaces)
|
|
2. Check key is active in Qwen dashboard
|
|
3. Ensure sufficient credits/quota
|
|
|
|
### Connection Timeout
|
|
|
|
**Error:**
|
|
```
|
|
Failed to connect to Qwen API
|
|
```
|
|
|
|
**Solution:**
|
|
1. Check internet connection
|
|
2. Verify `QWEN_BASE_URL` is correct
|
|
3. Try alternative: `https://api.qwen.ai/v1`
|
|
|
|
---
|
|
|
|
## Cost Optimization
|
|
|
|
### Use Appropriate Models
|
|
|
|
| Task | Recommended Model | Cost |
|
|
|------|------------------|------|
|
|
| Simple Q&A | `qwen-turbo` | $ |
|
|
| General tasks | `qwen-plus` | $$ |
|
|
| Complex reasoning | `qwen-max` | $$$ |
|
|
| Long documents | `qwen-long` | $$ |
|
|
|
|
### Example: Task-Based Routing
|
|
|
|
```typescript
|
|
// Simple task - use turbo
|
|
const simpleAgent = await rig.createAgent({
|
|
name: "quick",
|
|
model: "qwen-turbo",
|
|
});
|
|
|
|
// Complex task - use max
|
|
const complexAgent = await rig.createAgent({
|
|
name: "analyst",
|
|
model: "qwen-max",
|
|
});
|
|
```
|
|
|
|
---
|
|
|
|
## API Reference
|
|
|
|
### Environment Variables
|
|
|
|
| Variable | Required | Default | Description |
|
|
|----------|----------|---------|-------------|
|
|
| `QWEN_API_KEY` | ✅ For Qwen | - | Your Qwen API key |
|
|
| `QWEN_BASE_URL` | ❌ | `https://api.qwen.ai/v1` | API endpoint |
|
|
| `RIG_DEFAULT_PROVIDER` | ❌ | `qwen` | Default provider |
|
|
| `RIG_DEFAULT_MODEL` | ❌ | `qwen-plus` | Default model |
|
|
|
|
### Provider Values
|
|
|
|
| Value | Provider | Models |
|
|
|-------|----------|--------|
|
|
| `qwen` | Qwen | qwen-plus, qwen-max, qwen-turbo |
|
|
| `openai` | OpenAI | gpt-4o, gpt-4, gpt-3.5 |
|
|
| `anthropic` | Anthropic | claude-3-5-sonnet, claude-3 |
|
|
| `ollama` | Ollama | Any local model |
|
|
|
|
---
|
|
|
|
## Resources
|
|
|
|
- **Qwen Platform**: https://platform.qwen.ai/
|
|
- **Qwen Docs**: https://help.qwen.ai/
|
|
- **Pricing**: https://qwen.ai/pricing
|
|
- **Rig Integration**: `docs/RIG-INTEGRATION.md`
|
|
|
|
---
|
|
|
|
## Support
|
|
|
|
Issues? Check:
|
|
1. `docs/RIG-STATUS.md` - Known issues
|
|
2. Rig service logs: `cargo run --release --verbose`
|
|
3. Qwen status: https://status.qwen.ai/
|