diff --git a/README.md b/README.md index e1b267b..60ca8be 100644 --- a/README.md +++ b/README.md @@ -276,6 +276,7 @@ volumes: ## 模型说明 以下对所有可支持的模型的配置和使用方法进行说明,模型接口实现在项目的 `bot/` 目录下。 +>部分模型厂商接入有官方sdk和OpenAI兼容两种方式,建议使用OpenAI兼容的方式。
OpenAI @@ -288,12 +289,14 @@ volumes: { "model": "gpt-4.1-mini", "open_ai_api_key": "YOUR_API_KEY", - "open_ai_api_base": "https://api.openai.com/v1" + "open_ai_api_base": "https://api.openai.com/v1", + "bot_type": "chatGPT" } ``` - - `model`: 与OpenAI接口的model参数一致,支持包括 gpt-4.1系列, gpt-4o系列, o系列模型 + - `model`: 与OpenAI接口的 [model参数](https://platform.openai.com/docs/models) 一致,支持包括 o系列、gpt-4系列、gpt-3.5系列等模型 - `open_ai_api_base`: 如果需要接入第三方代理接口,可通过修改该参数进行接入 + - `bot_type`: 使用OpenAI相关模型时无需填写。当使用第三方代理接口接入Claude等非OpenAI官方模型时,该参数设为 `chatGPT`
@@ -317,7 +320,241 @@ volumes: + `model`: model字段填写空则直接使用智能体的模型,可在平台中灵活切换,[模型列表](https://link-ai.tech/console/models)中的全部模型均可使用
-更多模型说明:Coming soon... +
+百度文心 +方式一:官方SDK接入,配置如下: + +```json +{ + "model": "wenxin", + "baidu_wenxin_api_key": "IajztZ0bDxgnP9bEykU7lBer", + "baidu_wenxin_secret_key": "EDPZn6L24uAS9d8RWFfotK47dPvkjD6G", +} +``` + - `model`: 可填 `wenxin`和`wenxin-4`,对应模型为 文心-3.5 和 文心-4.0 + - `baidu_wenxin_api_key`:参考 [千帆平台-access_token鉴权](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dlv4pct3s) 文档获取 API Key + - `baidu_wenxin_secret_key`:参考 [千帆平台-access_token鉴权](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/dlv4pct3s) 文档获取 Secret Key + +方式二:OpenAI兼容方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "qwen-turbo", + "open_ai_api_base": "https://qianfan.baidubce.com/v2", + "open_ai_api_key": "bce-v3/ALTxxxxxxd2b" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 支持官方所有模型,参考[模型列表](https://cloud.baidu.com/doc/WENXINWORKSHOP/s/Wm9cvy6rl) +- `open_ai_api_base`: 百度文心API的 BASE URL +- `open_ai_api_key`: 百度文心的 API-KEY,参考 [官方文档](https://cloud.baidu.com/doc/qianfan-api/s/ym9chdsy5) ,在 [控制台](https://console.bce.baidu.com/iam/#/iam/apikey/list) 创建API Key + +
+ +
+Claude + +1. API Key创建:在 [Claude控制台](https://console.anthropic.com/settings/keys) 创建API Key + +2. 填写配置 + +```json +{ + "model": "claude-sonnet-4-0", + "claude_api_key": "YOUR_API_KEY", +} +``` + - `model`: 参考 [官方模型ID](https://docs.anthropic.com/en/docs/about-claude/models/overview#model-aliases) ,例如`claude-opus-4-0`、`claude-3-7-sonnet-latest`等 +
+ +
+通义千问 + +方式一:官方SDK接入,配置如下: + +```json +{ + "model": "qwen-turbo", + "dashscope_api_key": "sk-qVxxxxG" +} +``` + - `model`: 可填写`qwen-turbo、qwen-plus、qwen-max` + - `dashscope_api_key`: 通义千问的 API-KEY,参考 [官方文档](https://bailian.console.aliyun.com/?tab=api#/api) ,在 [控制台](https://bailian.console.aliyun.com/?tab=model#/api-key) 创建 + +方式二:OpenAI方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "qwen-turbo", + "open_ai_api_base": "https://dashscope.aliyuncs.com/compatible-mode/v1", + "open_ai_api_key": "sk-qVxxxxG" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 支持官方所有模型,参考[模型列表](https://help.aliyun.com/zh/model-studio/models?spm=a2c4g.11186623.0.0.78d84823Kth5on#9f8890ce29g5u) +- `open_ai_api_base`: 通义千问API的 BASE URL +- `open_ai_api_key`: 通义千问的 API-KEY,参考 [官方文档](https://bailian.console.aliyun.com/?tab=api#/api) ,在 [控制台](https://bailian.console.aliyun.com/?tab=model#/api-key) 创建 +
+ +
+Gemini + +API Key创建:在 [控制台](https://aistudio.google.com/app/apikey?hl=zh-cn) 创建API Key ,配置如下 +```json +{ + "model": "gemini-2.5-pro", + "gemini_api_key": "" +} +``` + - `model`: 参考[官方文档-模型列表](https://ai.google.dev/gemini-api/docs/models?hl=zh-cn) +
+ +
+MiniMax + +方式一:官方接入,配置如下: + +```json +{ + "model": "abab6.5-chat", + "Minimax_api_key": "", + "Minimax_group_id": "" +} +``` + - `model`: 可填写`abab6.5-chat` + - `Minimax_api_key`:MiniMax平台的API-KEY,在 [控制台](https://platform.minimaxi.com/user-center/basic-information/interface-key) 创建 + - `Minimax_group_id`: 在 [账户信息](https://platform.minimaxi.com/user-center/basic-information) 右上角获取 + +方式二:OpenAI方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "MiniMax-M1", + "open_ai_api_base": "https://api.minimaxi.com/v1", + "open_ai_api_key": "" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 可填`MiniMax-M1、MiniMax-Text-01`,参考[API文档](https://platform.minimaxi.com/document/%E5%AF%B9%E8%AF%9D?key=66701d281d57f38758d581d0#QklxsNSbaf6kM4j6wjO5eEek) +- `open_ai_api_base`: MiniMax平台API的 BASE URL +- `open_ai_api_key`: MiniMax平台的API-KEY,在 [控制台](https://platform.minimaxi.com/user-center/basic-information/interface-key) 创建 +
+ +
+Moonshot + +方式一:官方接入,配置如下: + +```json +{ + "model": "moonshot-v1-8k", + "moonshot_api_key": "moonshot-v1-8k" +} +``` + - `model`: 可填写`moonshot-v1-8k、 moonshot-v1-32k、 moonshot-v1-128k` + - `moonshot_api_key`: Moonshot的API-KEY,在 [控制台](https://platform.moonshot.cn/console/api-keys) 创建 + +方式二:OpenAI方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "moonshot-v1-8k", + "open_ai_api_base": "https://api.moonshot.cn/v1", + "open_ai_api_key": "" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 可填写`moonshot-v1-8k、 moonshot-v1-32k、 moonshot-v1-128k` +- `open_ai_api_base`: Moonshot的 BASE URL +- `open_ai_api_key`: Moonshot的 API-KEY,在 [控制台](https://platform.moonshot.cn/console/api-keys) 创建 +
+ +
+讯飞星火 + +方式一:官方接入,配置如下: +参考 [官方文档-快速指引](https://www.xfyun.cn/doc/platform/quickguide.html#%E7%AC%AC%E4%BA%8C%E6%AD%A5-%E5%88%9B%E5%BB%BA%E6%82%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%BA%94%E7%94%A8-%E5%BC%80%E5%A7%8B%E4%BD%BF%E7%94%A8%E6%9C%8D%E5%8A%A1) 获取 `APPID、 APISecret、 APIKey` 三个参数 + +```json +{ + "model": "xunfei", + "xunfei_app_id": "", + "xunfei_api_key": "", + "xunfei_api_secret": "", + "xunfei_domain": "4.0Ultra", + "xunfei_spark_url": "wss://spark-api.xf-yun.com/v4.0/chat" +} +``` + - `model`: 填 `xunfei` + - `xunfei_domain`: 可填写 `4.0Ultra、 generalv3.5、 max-32k、 generalv3、 pro-128k、 lite` + - `xunfei_spark_url`: 填写参考 [官方文档-请求地址](https://www.xfyun.cn/doc/spark/Web.html#_1-1-%E8%AF%B7%E6%B1%82%E5%9C%B0%E5%9D%80) 的说明 + +方式二:OpenAI方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "4.0Ultra", + "open_ai_api_base": "https://spark-api-open.xf-yun.com/v1", + "open_ai_api_key": "" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 可填写 `4.0Ultra、 generalv3.5、 max-32k、 generalv3、 pro-128k、 lite` +- `open_ai_api_base`: 讯飞星火平台的 BASE URL +- `open_ai_api_key`: 讯飞星火平台的[APIPassword](https://console.xfyun.cn/services/bm3) ,因模型而已 +
+ +
+智谱AI + +方式一:官方接入,配置如下: + +```json +{ + "model": "glm-4-plus", + "zhipu_ai_api_key": "", +} +``` + - `model`: 可填 `glm-4-plus、glm-4-air-250414、glm-4-airx、glm-4-long 、glm-4-flashx 、glm-4-flash-250414`, 参考 [glm-4系列模型编码](https://bigmodel.cn/dev/api/normal-model/glm-4) + - `zhipu_ai_api_key`: 智谱AI平台的 API KEY,在 [控制台](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys) 创建 + +方式二:OpenAI方式接入,配置如下: +```json +{ + "bot_type": "chatGPT", + "model": "glm-4-plus", + "open_ai_api_base": "https://open.bigmodel.cn/api/paas/v4", + "open_ai_api_key": "" +} +``` +- `bot_type`: OpenAI兼容方式 +- `model`: 可填 `glm-4-plus、glm-4-air-250414、glm-4-airx、glm-4-long 、glm-4-flashx 、glm-4-flash-250414`, 参考 [glm-4系列模型编码](https://bigmodel.cn/dev/api/normal-model/glm-4) +- `open_ai_api_base`: 智谱AI平台的 BASE URL +- `open_ai_api_key`: 智谱AI平台的 API KEY,在 [控制台](https://www.bigmodel.cn/usercenter/proj-mgmt/apikeys) 创建 +
+ +
+ModelScope + + + +```json +{ + "bot_type": "modelscope", + "model": "Qwen/QwQ-32B", + "modelscope_api_key": "your_api_key", + "modelscope_base_url": "https://api-inference.modelscope.cn/v1/chat/completions", + "text_to_image": "MusePublic/489_ckpt_FLUX_1", +} +``` + +- `bot_type`: modelscope接口格式 +- `model`: 参考[模型列表](https://www.modelscope.cn/models?filter=inference_type&page=1) +- `modelscope_api_key`: 参考 [官方文档-访问令牌](https://modelscope.cn/docs/accounts/token) ,在 [控制台](https://modelscope.cn/my/myaccesstoken) +- `modelscope_base_url`: modelscope平台的 BASE URL +- `text_to_image`: 图像生成模型,参考[模型列表](https://www.modelscope.cn/models?filter=inference_type&page=1) +
+ ## 通道说明 diff --git a/bot/chatgpt/chat_gpt_bot.py b/bot/chatgpt/chat_gpt_bot.py index 154a422..348d5fa 100644 --- a/bot/chatgpt/chat_gpt_bot.py +++ b/bot/chatgpt/chat_gpt_bot.py @@ -130,7 +130,7 @@ class ChatGPTBot(Bot, OpenAIImage): args = self.args response = openai.ChatCompletion.create(api_key=api_key, messages=session.messages, **args) # logger.debug("[CHATGPT] response={}".format(response)) - # logger.info("[ChatGPT] reply={}, total_tokens={}".format(response.choices[0]['message']['content'], response["usage"]["total_tokens"])) + logger.info("[ChatGPT] reply={}, total_tokens={}".format(response.choices[0]['message']['content'], response["usage"]["total_tokens"])) return { "total_tokens": response["usage"]["total_tokens"], "completion_tokens": response["usage"]["completion_tokens"], diff --git a/requirements-optional.txt b/requirements-optional.txt index 8a9a0f9..cebc9e9 100644 --- a/requirements-optional.txt +++ b/requirements-optional.txt @@ -28,7 +28,7 @@ websocket-client==1.2.0 # claude bot curl_cffi # claude API -anthropic +anthropic==0.25.0 # tongyi qwen broadscope_bailian