Skip to content

Commit 2c94827

Browse files
authored
Merge pull request #88 from zmx198768/feature_qwen
LLM供应商增加通义千问
2 parents 42b796a + 85a462e commit 2c94827

File tree

4 files changed

+39
-2
lines changed

4 files changed

+39
-2
lines changed

biz/llm/client/qwen.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import os
2+
from typing import Dict, List, Optional
3+
4+
from openai import OpenAI
5+
6+
from biz.llm.client.base import BaseClient
7+
from biz.llm.types import NotGiven, NOT_GIVEN
8+
9+
10+
class QwenClient(BaseClient):
11+
def __init__(self, api_key: str = None):
12+
self.api_key = api_key or os.getenv("QWEN_API_KEY")
13+
self.base_url = os.getenv("QWEN_API_BASE_URL", "https://dashscope.aliyuncs.com/compatible-mode/v1")
14+
if not self.api_key:
15+
raise ValueError("API key is required. Please provide it or set it in the environment variables.")
16+
17+
self.client = OpenAI(api_key=self.api_key, base_url=self.base_url)
18+
self.default_model = os.getenv("QWEN_API_MODEL", "qwen-coder-plus")
19+
20+
def completions(self,
21+
messages: List[Dict[str, str]],
22+
model: Optional[str] | NotGiven = NOT_GIVEN,
23+
) -> str:
24+
model = model or self.default_model
25+
completion = self.client.chat.completions.create(
26+
model=model,
27+
messages=messages,
28+
)
29+
return completion.choices[0].message.content

biz/llm/factory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from biz.llm.client.deepseek import DeepSeekClient
55
from biz.llm.client.ollama_client import OllamaClient
66
from biz.llm.client.openai import OpenAIClient
7+
from biz.llm.client.qwen import QwenClient
78
from biz.llm.client.zhipuai import ZhipuAIClient
89
from biz.utils.log import logger
910

@@ -16,6 +17,7 @@ def getClient(provider: str = None) -> BaseClient:
1617
'zhipuai': lambda: ZhipuAIClient(),
1718
'openai': lambda: OpenAIClient(),
1819
'deepseek': lambda: DeepSeekClient(),
20+
'qwen': lambda: QwenClient(),
1921
'ollama': lambda : OllamaClient()
2022
}
2123

biz/utils/config_checker.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,15 @@
1515
]
1616

1717
# 允许的 LLM 供应商
18-
LLM_PROVIDERS = {"zhipuai", "openai", "deepseek", "ollama"}
18+
LLM_PROVIDERS = {"zhipuai", "openai", "deepseek", "ollama", "qwen"}
1919

2020
# 每种供应商必须配置的键
2121
LLM_REQUIRED_KEYS = {
2222
"zhipuai": ["ZHIPUAI_API_KEY", "ZHIPUAI_API_MODEL"],
2323
"openai": ["OPENAI_API_KEY", "OPENAI_API_MODEL"],
2424
"deepseek": ["DEEPSEEK_API_KEY", "DEEPSEEK_API_MODEL"],
2525
"ollama": ["OLLAMA_API_BASE_URL", "OLLAMA_API_MODEL"],
26+
"qwen": ["QWEN_API_KEY", "QWEN_API_MODEL"],
2627
}
2728

2829

conf/.env.dist

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ SERVER_PORT=5001
55
TZ=Asia/Shanghai
66

77
#大模型供应商配置,支持 zhipuai , openai , deepseek or ollama
8-
LLM_PROVIDER=deepseek
8+
LLM_PROVIDER=qwen
99

1010
#ZhipuAI settings
1111
ZHIPUAI_API_KEY=xxxx
@@ -16,6 +16,11 @@ OPENAI_API_KEY=xxxx
1616
OPENAI_API_BASE_URL=https://api.openai.com
1717
OPENAI_API_MODEL=gpt-4o-mini
1818

19+
#Qwen settings
20+
QWEN_API_KEY=sk-xxx
21+
QWEN_API_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
22+
QWEN_API_MODEL=qwen-coder-plus
23+
1924
#DeepSeek settings
2025
DEEPSEEK_API_KEY=
2126
DEEPSEEK_API_BASE_URL=https://api.deepseek.com

0 commit comments

Comments
 (0)