From 9ad39680844ce5583c2c3dc1e91d20eb425e5992 Mon Sep 17 00:00:00 2001 From: cowagent Date: Thu, 5 Feb 2026 19:06:46 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=94=AF=E6=8C=81=E6=99=BA=E8=B0=B1AI?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89API=20base=20URL=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 ZhipuAiClient 初始化时未传入 base_url 参数的问题 - 使配置文件中的 zhipu_ai_api_base 配置项生效 - 支持智谱国际版(z.ai)等自定义API端点 - 同时修复对话和图片生成功能 - 添加日志输出便于确认使用的API地址 Fixes #2659 --- models/zhipuai/zhipu_ai_image.py | 11 ++++++++++- models/zhipuai/zhipuai_bot.py | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/models/zhipuai/zhipu_ai_image.py b/models/zhipuai/zhipu_ai_image.py index f4b9f23..3839a0e 100644 --- a/models/zhipuai/zhipu_ai_image.py +++ b/models/zhipuai/zhipu_ai_image.py @@ -7,7 +7,16 @@ from config import conf class ZhipuAIImage(object): def __init__(self): from zai import ZhipuAiClient - self.client = ZhipuAiClient(api_key=conf().get("zhipu_ai_api_key")) + # 初始化客户端,支持自定义 API base URL(例如智谱国际版 z.ai) + api_key = conf().get("zhipu_ai_api_key") + api_base = conf().get("zhipu_ai_api_base") + + if api_base: + self.client = ZhipuAiClient(api_key=api_key, base_url=api_base) + logger.info(f"[ZHIPU_AI_IMAGE] 使用自定义 API Base URL: {api_base}") + else: + self.client = ZhipuAiClient(api_key=api_key) + logger.info("[ZHIPU_AI_IMAGE] 使用默认 API Base URL") def create_img(self, query, retry_count=0, api_key=None, api_base=None): try: diff --git a/models/zhipuai/zhipuai_bot.py b/models/zhipuai/zhipuai_bot.py index ddb1af7..ed5f81e 100644 --- a/models/zhipuai/zhipuai_bot.py +++ b/models/zhipuai/zhipuai_bot.py @@ -24,7 +24,16 @@ class ZHIPUAIBot(Bot, ZhipuAIImage): "temperature": conf().get("temperature", 0.9), # 值在(0,1)之间(智谱AI 的温度不能取 0 或者 1) "top_p": conf().get("top_p", 0.7), # 值在(0,1)之间(智谱AI 的 top_p 不能取 0 或者 1) } - self.client = ZhipuAiClient(api_key=conf().get("zhipu_ai_api_key")) + # 初始化客户端,支持自定义 API base URL(例如智谱国际版 z.ai) + api_key = conf().get("zhipu_ai_api_key") + api_base = conf().get("zhipu_ai_api_base") + + if api_base: + self.client = ZhipuAiClient(api_key=api_key, base_url=api_base) + logger.info(f"[ZHIPU_AI] 使用自定义 API Base URL: {api_base}") + else: + self.client = ZhipuAiClient(api_key=api_key) + logger.info("[ZHIPU_AI] 使用默认 API Base URL") def reply(self, query, context=None): # acquire reply content