fb309299bf
Made-with: Cursor
2.9 KiB
2.9 KiB
LLM 工厂模块说明
模块概述
LLM 工厂模块提供统一的 LLM(大语言模型)客户端构建接口,支持多种 LLM 提供商的初始化和管理。
支持的 LLM 提供商
| 提供商 | 模型 | 说明 |
|---|---|---|
| DeepSeek | deepseek-chat | 深度求索 |
| OpenAI | gpt-4o-mini, gpt-4 | OpenAI GPT 系列 |
| 通义千问 | qwen-max, qwen-turbo | 阿里云 |
| Groq | llama3-70b-8192 | Groq 推理加速 |
| Moonshot | moonshot-v1-128k | Kimi |
| 豆包 | 自定义 | 字节跳动 |
| 文心一言 | ernie-bot-turbo | 百度 |
使用方式
基本用法
from modules.llm_factory import build_llm
# 构建 LLM 实例
llm = build_llm(
provider="DeepSeek",
api_key="sk-xxx",
model="deepseek-chat",
temperature=0.7
)
# 使用 LLM
response = llm.invoke("你好")
获取默认模型
from modules.llm_factory import get_default_model
model = get_default_model("DeepSeek")
# 返回: "deepseek-chat"
获取支持的提供商列表
from modules.llm_factory import get_supported_providers
providers = get_supported_providers()
# 返回: ["DeepSeek", "OpenAI (GPT)", "Tongyi (通义千问)", ...]
技术实现
核心文件
| 文件 | 说明 |
|---|---|
modules/llm_factory.py |
LLM 工厂模块 |
modules/chat_doubao.py |
豆包聊天模型封装 |
设计模式
采用工厂模式,统一管理多种 LLM 提供商:
build_llm(provider, api_key, model, temperature)
├── DeepSeek → ChatDeepSeek
├── OpenAI → ChatOpenAI
├── Tongyi → ChatTongyi
├── Groq → ChatGroq
├── Moonshot → ChatMoonshot
├── 豆包 → ChatDoubao (自定义)
└── 文心一言 → QianfanChatEndpoint
缓存机制
在 geo_tool.py 中使用 Streamlit 的 @st.cache_resource 装饰器缓存 LLM 实例:
@st.cache_resource(show_spinner=False)
def build_llm(provider, api_key, model, temperature):
from modules.llm_factory import build_llm as _build_llm
return _build_llm(provider, api_key, model, temperature)
特殊配置
豆包 API Key 格式
豆包使用特殊的 API Key 格式:
access_key:secret_key:endpoint_id
示例:
AKLTxxx:SKxxx:ep-xxx
文心一言 API Key 格式
文心一言使用百度千帆平台的 API Key:
app_key:app_secret
错误处理
模块提供清晰的错误提示:
try:
llm = build_llm("Unknown", api_key, model, temperature)
except ValueError as e:
print(e) # "不支持的 LLM 提供商: Unknown"
后续优化方向
- 负载均衡:支持多个 API Key 轮询使用
- 自动降级:主提供商失败时自动切换到备用
- 成本优化:根据任务复杂度自动选择合适的模型
- 性能监控:记录每个提供商的响应时间和成功率