feat: glm-4.6v不支持网络搜索。更换为glm-4.5-air
This commit is contained in:
parent
c87a5b3f0e
commit
b878011a2c
|
|
@ -34,7 +34,7 @@ def get_client():
|
||||||
from zai import ZhipuAiClient
|
from zai import ZhipuAiClient
|
||||||
except ImportError:
|
except ImportError:
|
||||||
raise ImportError("GLM 模式需要安装 zai-sdk:.venv/bin/pip install zai-sdk")
|
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:
|
if not api_key:
|
||||||
raise ValueError("GLM 模式需要设置环境变量 ZHIPU_API_KEY")
|
raise ValueError("GLM 模式需要设置环境变量 ZHIPU_API_KEY")
|
||||||
_client = ZhipuAiClient(api_key=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_TEXT_MODEL = "glm-4.5-Air" # glm-4.6 文本统一模型
|
||||||
DEFAULT_VISION_MODEL = "glm-4.6v"
|
DEFAULT_VISION_MODEL = "glm-4.5-Air"
|
||||||
|
|
||||||
MODEL_MAP = {
|
MODEL_MAP = {
|
||||||
"qwen-max": "glm-4.6v",
|
"qwen-max": "glm-4.5-Air",
|
||||||
"qwen-plus": "glm-4.6v",
|
"qwen-plus": "glm-4.5-Air",
|
||||||
"qwen-turbo": "glm-4.6v",
|
"qwen-turbo": "glm-4.5-Air",
|
||||||
"qwen-vl-max": "glm-4.6v",
|
"qwen-vl-max": "glm-4.5-Air",
|
||||||
"qwen-vl-plus": "glm-4.6v",
|
"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()
|
_SENTINEL = object()
|
||||||
|
|
||||||
|
# ── 流式调用 ────────────────────────────────────────────────────────
|
||||||
async def glm_stream_generator(
|
async def glm_stream_generator(
|
||||||
messages: list,
|
messages: list,
|
||||||
model: str,
|
model: str,
|
||||||
|
|
@ -221,11 +221,11 @@ async def glm_stream_generator(
|
||||||
extra_kwargs: dict = {}
|
extra_kwargs: dict = {}
|
||||||
if web_search:
|
if web_search:
|
||||||
extra_kwargs["tools"] = [
|
extra_kwargs["tools"] = [
|
||||||
{"type": "web_search", "web_search": {"search_result": True}}
|
{"type": "web_search", "web_search": {"enable":True,"search_result": True}}
|
||||||
]
|
]
|
||||||
if deep_thinking:
|
if not deep_thinking:
|
||||||
extra_kwargs["thinking"] = {"type": "enabled"}
|
# 智普默认开启思考模式,所以要用非门(不知道“非门”描述是否准确。前端选择开启思考模式,这里不做变动。前端选择关闭思考模式,这里关闭。)
|
||||||
|
extra_kwargs["thinking"] = {"type": "disabled"}
|
||||||
print(f"[GLM] 流式请求:model={actual_model} vision={has_vision} "
|
print(f"[GLM] 流式请求:model={actual_model} vision={has_vision} "
|
||||||
f"web_search={web_search} thinking={deep_thinking}")
|
f"web_search={web_search} thinking={deep_thinking}")
|
||||||
|
|
||||||
|
|
@ -334,9 +334,13 @@ def glm_chat_sync(
|
||||||
|
|
||||||
extra_kwargs: dict = {}
|
extra_kwargs: dict = {}
|
||||||
if web_search:
|
if web_search:
|
||||||
extra_kwargs["tools"] = [
|
extra_kwargs["tools"] = [{
|
||||||
{"type": "web_search", "web_search": {"search_result": True}}
|
"type": "web_search",
|
||||||
]
|
"web_search": {
|
||||||
|
"enable": True,
|
||||||
|
"search_result": True
|
||||||
|
}
|
||||||
|
}]
|
||||||
if deep_thinking:
|
if deep_thinking:
|
||||||
extra_kwargs["thinking"] = {"type": "enabled"}
|
extra_kwargs["thinking"] = {"type": "enabled"}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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())
|
||||||
Loading…
Reference in New Issue