feat: glm-4.6v不支持网络搜索。更换为glm-4.5-air

This commit is contained in:
SuperManTouX 2026-03-04 16:14:22 +08:00
parent c87a5b3f0e
commit b878011a2c
2 changed files with 51 additions and 16 deletions

View File

@ -34,7 +34,7 @@ def get_client():
from zai import ZhipuAiClient
except ImportError:
raise ImportError("GLM 模式需要安装 zai-sdk.venv/bin/pip install zai-sdk")
api_key = os.getenv("ZHIPU_API_KEY") or os.getenv("GLM_API_KEY")
api_key = os.getenv("ZHIPU_API_KEY").strip() or os.getenv("GLM_API_KEY").strip()
if not api_key:
raise ValueError("GLM 模式需要设置环境变量 ZHIPU_API_KEY")
_client = ZhipuAiClient(api_key=api_key)
@ -43,15 +43,15 @@ def get_client():
# ── 模型映射 ──────────────────────────────────────────────────────────
DEFAULT_TEXT_MODEL = "glm-4.6v" # glm-4.6v 文本+视觉统一模型
DEFAULT_VISION_MODEL = "glm-4.6v"
DEFAULT_TEXT_MODEL = "glm-4.5-Air" # glm-4.6 文本统一模型
DEFAULT_VISION_MODEL = "glm-4.5-Air"
MODEL_MAP = {
"qwen-max": "glm-4.6v",
"qwen-plus": "glm-4.6v",
"qwen-turbo": "glm-4.6v",
"qwen-vl-max": "glm-4.6v",
"qwen-vl-plus": "glm-4.6v",
"qwen-max": "glm-4.5-Air",
"qwen-plus": "glm-4.5-Air",
"qwen-turbo": "glm-4.5-Air",
"qwen-vl-max": "glm-4.5-Air",
"qwen-vl-plus": "glm-4.5-Air",
}
@ -195,7 +195,7 @@ def build_glm_messages(messages: list, files: list | None = None) -> tuple[list,
# ── 哨兵对象 ─────────────────────────────────────────────────────────
_SENTINEL = object()
# ── 流式调用 ────────────────────────────────────────────────────────
async def glm_stream_generator(
messages: list,
model: str,
@ -221,11 +221,11 @@ async def glm_stream_generator(
extra_kwargs: dict = {}
if web_search:
extra_kwargs["tools"] = [
{"type": "web_search", "web_search": {"search_result": True}}
{"type": "web_search", "web_search": {"enable":True,"search_result": True}}
]
if deep_thinking:
extra_kwargs["thinking"] = {"type": "enabled"}
if not deep_thinking:
# 智普默认开启思考模式,所以要用非门(不知道“非门”描述是否准确。前端选择开启思考模式,这里不做变动。前端选择关闭思考模式,这里关闭。)
extra_kwargs["thinking"] = {"type": "disabled"}
print(f"[GLM] 流式请求model={actual_model} vision={has_vision} "
f"web_search={web_search} thinking={deep_thinking}")
@ -334,9 +334,13 @@ def glm_chat_sync(
extra_kwargs: dict = {}
if web_search:
extra_kwargs["tools"] = [
{"type": "web_search", "web_search": {"search_result": True}}
]
extra_kwargs["tools"] = [{
"type": "web_search",
"web_search": {
"enable": True,
"search_result": True
}
}]
if deep_thinking:
extra_kwargs["thinking"] = {"type": "enabled"}

View File

@ -0,0 +1,31 @@
import os
import sys
import asyncio
from pathlib import Path
# Add project root to sys.path
root_dir = Path(__file__).parent
sys.path.insert(0, str(root_dir))
from utils.glm_adapter import glm_stream_generator, _ensure_venv, glm_chat_sync
# Set API key from .env if needed
from dotenv import load_dotenv
load_dotenv()
async def test_stream():
msgs = [{"role": "user", "content": "今天北京天气怎样?"}]
print("Testing stream...")
async for chunk in glm_stream_generator(msgs, "glm-4.5-air", 0.7, 1024, web_search=True):
print(chunk, end="")
def test_sync():
msgs = [{"role": "user", "content": "今天几号?武汉天气怎样?"}]
print("Testing sync...")
res = glm_chat_sync(msgs, "glm-4.5-air", 0.7, 1024, web_search=True)
print(res)
if __name__ == "__main__":
_ensure_venv()
# test_sync()
asyncio.run(test_stream())