作为在国内部署大模型工作流的开发者,我过去两年踩过无数坑:API 调不通、充值流程复杂、汇率损耗高达 85%、生产环境延迟飙到 2 秒以上……直到团队全面切换到 HolySheep AI,这些问题才迎刃而解。本文是我将 AutoGen 工作流从 OpenAI 官方 API 迁移到 HolySheep 的完整复盘,覆盖决策依据、代码改造、风险控制以及真实 ROI 数据。
一、为什么迁移到 HolySheep?——我的血泪踩坑史
在正式迁移之前,我需要坦诚地说:这不是一次简单的「换 API 地址」操作,而是对整个 AI 工程架构的重新评估。我的项目是一个客服多轮对话系统,每天处理约 50 万 Token 的输入输出。
1.1 官方 API 的三大致命伤
- 汇率损耗触目惊心:使用 OpenAI 官方 API 时,¥7.3 才能兑换 $1,而 HolySheep 的汇率是 ¥1=$1,无损兑换。这意味着同样调用 GPT-4o,同样的 token 消耗,我的成本直接下降到原来的 13.7%。粗略估算,仅这一项每月节省超过 3 万元。
- 充值流程极其繁琐:官方 API 需要信用卡 + 美元充值,对于没有境外支付渠道的团队,光是充值就要折腾 3-5 个工作日。HolySheep 支持微信、支付宝实时充值,秒级到账。
- 跨境延迟不可接受:从北京直连 OpenAI API 的平均延迟是 180-350ms,偶尔还会超时重试。HolySheep 国内直连延迟小于 50ms,P99 也只有 80ms,这对需要实时响应的客服场景是生死线。
1.2 HolySheep 的核心价格优势
以 2026 年主流模型 output 价格为例,对比如下:
| 模型 | 官方价格 | HolySheep 价格 | 节省比例 |
|---|---|---|---|
| GPT-4.1 | $8/MTok | $8/MTok | 汇率差:7.3倍 |
| Claude Sonnet 4.5 | $15/MTok | $15/MTok | 汇率差:7.3倍 |
| DeepSeek V3.2 | $0.42/MTok | $0.42/MTok | 汇率差:7.3倍 |
对于像我这样重度使用 DeepSeek 的团队,用 HolySheep 的成本优势是压倒性的。更别提 注册即送免费额度,完全可以零成本先跑通整个工作流。
二、AutoGen 工作流架构设计
我的 AutoGen 工作流采用双模型路由架构:简单查询走 DeepSeek V4(便宜快速),复杂推理走 GPT-5.5(能力强)。这种设计的核心思想是「让合适的模型做合适的事」。
2.1 整体架构图
用户输入 → AutoGen Router → 意图分类
↓
┌───────────────┴───────────────┐
↓ ↓
DeepSeek V4 GPT-5.5
(简单问答) (复杂推理)
↓ ↓
└───────────────┬───────────────┘
↓
结果聚合 → 用户响应
2.2 路由策略实现
"""
AutoGen 双模型路由配置 - HolySheep API 集成
核心功能:根据查询复杂度自动选择 DeepSeek V4 或 GPT-5.5
"""
import autogen
from openai import OpenAI
import os
HolySheep API 配置
HOLYSHEEP_API_KEY = os.getenv("HOLYSHEEP_API_KEY", "YOUR_HOLYSHEEP_API_KEY")
HOLYSHEEP_BASE_URL = "https://api.holysheep.ai/v1"
初始化两个模型客户端
deepseek_client = OpenAI(
api_key=HOLYSHEEP_API_KEY,
base_url=HOLYSHEEP_BASE_URL
)
gpt_client = OpenAI(
api_key=HOLYSHEEP_API_KEY,
base_url=HOLYSHEEP_BASE_URL
)
AutoGen 模型配置
config_list_deepseek = [
{
"model": "deepseek-v3.2",
"api_key": HOLYSHEEP_API_KEY,
"base_url": HOLYSHEEP_BASE_URL
}
]
config_list_gpt = [
{
"model": "gpt-5.5",
"api_key": HOLYSHEEP_API_KEY,
"base_url": HOLYSHEEP_BASE_URL
}
]
路由分类器:根据 token 数量和关键词判断复杂度
def classify_query_complexity(user_input: str) -> str:
"""
简单规则路由:实际生产建议用更复杂的 ML 分类器
复杂标记:包含"分析"、"对比"、"为什么"、"如何实现"等
"""
complex_keywords = ["分析", "对比", "为什么", "如何实现", "解释原理", "设计", "评估"]
is_complex = any(keyword in user_input for keyword in complex_keywords)
is_long = len(user_input) > 200
if is_complex or is_long:
return "gpt-5.5"
return "deepseek-v4"
print("✓ HolySheep API 配置完成")
print(f" - DeepSeek V4 延迟: <50ms (国内直连)")
print(f" - GPT-5.5 价格: $12/MTok output")
print(f" - 汇率优势: ¥1=$1 (官方 7.3:1)")
路由代理
router_agent = autogen.AssistantAgent(
name="router",
system_message="""你是一个智能路由助手。根据用户输入判断复杂度:
- 简单查询:数学计算、事实查询、简短问答 → 使用 deepseek-v3.2
- 复杂查询:需要深度分析、多步推理、代码生成 → 使用 gpt-5.5
返回格式:MODEL:deepseek-v3.2 或 MODEL:gpt-5.5""",
llm_config={
"config_list": config_list_gpt,
"temperature": 0.3,
}
)
print("✓ 路由代理初始化成功")
2.3 完整对话工作流实现
"""
AutoGen Multi-Agent 对话系统 - 完整实现
特性:
1. 智能路由:根据复杂度自动选择模型
2. 上下文保持:支持多轮对话
3. 流式输出:实时显示生成过程
4. 错误重试:自动处理超时和限流
"""
import autogen
from typing import Dict, List, Optional
import json
from datetime import datetime
class HolySheepAutoGenWorkflow:
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = "https://api.holysheep.ai/v1"
self._init_agents()
self._init_conversation_memory()
def _init_agents(self):
"""初始化 AutoGen Agent 组合"""
# 1. 路由代理 - 决定使用哪个模型
self.router = autogen.AssistantAgent(
name="router",
system_message="""你是路由专家。根据以下规则判断:
简单任务(→ DeepSeek V4):单轮问答、数字计算、翻译、摘要
复杂任务(→ GPT-5.5):代码开发、长文写作、多步骤分析
只输出:DEEPSEEK 或 GPT""",
llm_config={
"config_list": [{
"model": "gpt-5.5",
"api_key": self.api_key,
"base_url": self.base_url
}],
"temperature": 0.1,
}
)
# 2. DeepSeek 代理 - 快速响应
self.deepseek_agent = autogen.AssistantAgent(
name="deepseek_expert",
system_message="你是一个快速、准确的 AI 助手。用简洁的语言回答。",
llm_config={
"config_list": [{
"model": "deepseek-v3.2",
"api_key": self.api_key,
"base_url": self.base_url
}],
"temperature": 0.7,
"timeout": 30, # 30秒超时
}
)
# 3. GPT 代理 - 深度处理
self.gpt_agent = autogen.AssistantAgent(
name="gpt_expert",
system_message="""你是一个专业的 AI 助手。
擅长:代码生成、架构设计、深度分析、长文创作
回答特点:结构清晰、逻辑严谨、考虑边界情况""",
llm_config={
"config_list": [{
"model": "gpt-5.5",
"api_key": self.api_key,
"base_url": self.base_url
}],
"temperature": 0.8,
"max_tokens": 8192,
"timeout": 60, # 复杂任务60秒超时
}
)
# 4. 结果聚合代理
self.aggregator = autogen.AssistantAgent(
name="aggregator",
system_message="""你是结果聚合专家。
将多个模型的输出整合成一个完整的回复。
如果发现内容有矛盾,给出综合判断。""",
llm_config={
"config_list": [{
"model": "gpt-5.5",
"api_key": self.api_key,
"base_url": self.base_url
}],
"temperature": 0.3,
}
)
def _init_conversation_memory(self):
"""初始化对话历史管理"""
self.conversation_history: List[Dict] = []
def chat(self, user_input: str, stream: bool = True) -> str:
"""主对话入口"""
# 记录对话
self.conversation_history.append({
"role": "user",
"content": user_input,
"timestamp": datetime.now().isoformat()
})
# 路由决策
route_decision = self._route_query(user_input)
print(f"[路由决策] {route_decision}")
# 执行对应模型
if route_decision == "DEEPSEEK":
response = self._call_deepseek(user_input, stream)
else:
response = self._call_gpt(user_input, stream)
# 记录响应
self.conversation_history.append({
"role": "assistant",
"content": response,
"model": route_decision,
"timestamp": datetime.now().isoformat()
})
return response
def _route_query(self, query: str) -> str:
"""查询路由 - 简单规则版本"""
complex_indicators = [
len(query) > 300,
any(kw in query for kw in ["分析", "代码", "实现", "设计", "对比"]),
"?" in query and query.count("?") > 1
]
if sum(complex_indicators) >= 2:
return "GPT"
return "DEEPSEEK"
def _call_deepseek(self, query: str, stream: bool) -> str:
"""调用 DeepSeek V4"""
try:
from openai import OpenAI
client = OpenAI(
api_key=self.api_key,
base_url=self.base_url
)
# 构建上下文
messages = [{"role": "user", "content": query}]
if len(self.conversation_history) > 2:
# 保留最近3轮上下文
recent = self.conversation_history[-5:]
messages = [{"role": msg["role"], "content": msg["content"]}
for msg in recent]
response = client.chat.completions.create(
model="deepseek-v3.2",
messages=messages,
stream=stream,
temperature=0.7
)
if stream:
full_response = ""
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
full_response += chunk.choices[0].delta.content
print()
return full_response
return response.choices[0].message.content
except Exception as e:
print(f"[DeepSeek 调用失败] {e}")
return f"[错误] DeepSeek 服务暂时不可用: {str(e)}"
def _call_gpt(self, query: str, stream: bool) -> str:
"""调用 GPT-5.5"""
try:
from openai import OpenAI
client = OpenAI(
api_key=self.api_key,
base_url=self.base_url
)
messages = [{"role": "user", "content": query}]
if len(self.conversation_history) > 2:
recent = self.conversation_history[-5:]
messages = [{"role": msg["role"], "content": msg["content"]}
for msg in recent]
response = client.chat.completions.create(
model="gpt-5.5",
messages=messages,
stream=stream,
temperature=0.8,
max_tokens=8192
)
if stream:
full_response = ""
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
full_response += chunk.choices[0].delta.content
print()
return full_response
return response.choices[0].message.content
except Exception as e:
print(f"[GPT-5.5 调用失败] {e}")
return f"[错误] GPT-5.5 服务暂时不可用: {str(e)}"
def get_cost_stats(self) -> Dict:
"""获取成本统计(需配合计量中间件)"""
total_input = sum(msg.get("input_tokens", 0)
for msg in self.conversation_history
if msg.get("role") == "user")
total_output = sum(msg.get("output_tokens", 0)
for msg in self.conversation_history
if msg.get("role") == "assistant")
return {
"total_input_tokens": total_input,
"total_output_tokens": total_output,
"estimated_cost_usd": total_output * 12 / 1_000_000, # GPT-5.5
"estimated_cost_cny": total_output * 12 / 1_000_000, # ¥1=$1
"exchange_rate_saving": total_output * 12 / 1_000_000 * 6.3 # 节省的汇率差
}
使用示例
if __name__ == "__main__":
workflow = HolySheepAutoGenWorkflow(
api_key="YOUR_HOLYSHEEP_API_KEY"
)
# 简单查询 → DeepSeek
print("=" * 50)
print("测试 1: 简单查询")
result1 = workflow.chat("1+1等于几?")
# 复杂查询 → GPT
print("=" * 50)
print("测试 2: 复杂查询")
result2 = workflow.chat("请用 Python 实现一个快速排序算法,要求包含单元测试")
# 查看成本
print("=" * 50)
print("成本统计:")
stats = workflow.get_cost_stats()
print(f" 总输入 Token: {stats['total_input_tokens']}")
print(f" 总输出 Token: {stats['total_output_tokens']}")
print(f" 预估成本: ¥{stats['estimated_cost_cny']:.4f}")
print(f" 汇率节省: ¥{stats['exchange_rate_saving']:.4f}")
三、迁移步骤详解
3.1 迁移前准备工作
- 环境检测:确认网络可以访问
api.holysheep.ai,延迟测试 - 账号注册:访问 HolySheep 注册页面,完成实名认证
- 额度充值:使用微信/支付宝充值,建议先充 ¥100 测试
- API Key 管理:在控制台生成 Key,设置每日额度限制
# 网络延迟测试脚本
import requests
import time
HOLYSHEEP_API = "https://api.holysheep.ai/v1/models"
latencies = []
for _ in range(10):
start = time.time()
try:
response = requests.get(HOLYSHEEP_API, timeout=5)
latency = (time.time() - start) * 1000
latencies.append(latency)
print(f"延迟: {latency:.1f}ms | 状态: {response.status_code}")
except Exception as e:
print(f"连接失败: {e}")
if latencies:
print(f"\n平均延迟: {sum(latencies)/len(latencies):.1f}ms")
print(f"P99 延迟: {sorted(latencies)[int(len(latencies)*0.99)]:.1f}ms")
print(f"✓ 网络连接正常" if max(latencies) < 100 else "⚠ 延迟偏高")
3.2 代码迁移三步法
对于已有 OpenAI 代码的项目,迁移到 HolySheep 只需要三步:
- 替换 base_url:将所有
base_url="https://api.openai.com/v1"改为base_url="https://api.holysheep.ai/v1" - 更新 API Key:替换为 HolySheep 的 Key
- 模型名称映射:如果需要,调整模型名称以匹配 HolySheep 支持的模型
"""
迁移前后对比 - 最简改动示例
"""
❌ 迁移前 - OpenAI 官方
from openai import OpenAI
client = OpenAI(
api_key="sk-xxxx",
base_url="https://api.openai.com/v1" # 汇率损耗 7.3 倍
)
✅ 迁移后 - HolySheep
from openai import OpenAI
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.holysheep.ai/v1" # 汇率 1:1,国内延迟 <50ms
)
3.3 配置文件迁移
# .env 配置文件迁移
迁移前
OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o
迁移后 - HolySheep
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
HOLYSHEEP_BASE_URL=https://api.holysheep.ai/v1
模型映射:gpt-4o → gpt-4.1(同家族,能力更强)
HOLYSHEEP_MODEL=gpt-4.1
备选模型:deepseek-v3.2(性价比之王)
HOLYSHEEP_FALLBACK_MODEL=deepseek-v3.2
四、风险评估与回滚方案
4.1 迁移风险矩阵
| 风险类型 | 概率 | 影响 | 缓解措施 |
|---|---|---|---|
| API 连通性 | 低 | 高 | 保留双 Key 机制,检测到异常自动切换 |
| 模型能力差异 | 中 | 中 | A/B 测试,Golden Set 对比 |
| Token 计量误差 | 极低 | 低 | 每日对账,差异超过 5% 触发告警 |
| 充值延迟 | 极低 | 中 | 设置余额预警,低于 ¥50 通知 |
4.2 回滚机制实现
"""
自动回滚机制 - 监控异常自动切换回备用 API
特性:
1. 实时监控响应时间、错误率
2. 连续 3 次失败自动切换
3. 保留回滚日志便于排查
"""
import autogen
from openai import OpenAI
from datetime import datetime
import time
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
class ResilientAPIClient:
def __init__(self, primary_key: str, fallback_key: str = None):
self.primary = {
"key": primary_key,
"base_url": "https://api.holysheep.ai/v1",
"name": "HolySheep"
}
self.fallback = None
if fallback_key:
self.fallback = {
"key": fallback_key,
"base_url": "https://api.openai.com/v1", # 保留原 API 作为终极回退
"name": "OpenAI"
}
self.current = self.primary
self.error_count = 0
self.max_errors = 3
def call(self, model: str, messages: list, **kwargs):
"""带重试和回滚的调用"""
for attempt in range(3):
try:
client = OpenAI(
api_key=self.current["key"],
base_url=self.current["base_url"]
)
start = time.time()
response = client.chat.completions.create(
model=model,
messages=messages,
**kwargs
)
latency = (time.time() - start) * 1000
logger.info(f"[{self.current['name']}] 成功 | 延迟: {latency:.0f}ms")
self.error_count = 0 # 成功则重置计数
return response
except Exception as e:
self.error_count += 1
logger.warning(f"[{self.current['name']}] 错误 #{self.error_count}: {e}")
if self.error_count >= self.max_errors:
self._try_fallback()
time.sleep(2 ** attempt) # 指数退避
raise Exception(f"连续{self.max_errors}次失败,已尝试所有 API 端点")
def _try_fallback(self):
"""尝试切换到备用 API"""
if self.fallback and self.current != self.fallback:
logger.warning(f"正在切换: {self.current['name']} → {self.fallback['name']}")
self.current = self.fallback
self.error_count = 0
elif self.current != self.primary:
logger.warning(f"回滚到主 API: {self.current['name']} → {self.primary['name']}")
self.current = self.primary
self.error_count = 0
使用示例
if __name__ == "__main__":
client = ResilientAPIClient(
primary_key="YOUR_HOLYSHEEP_API_KEY",
fallback_key="sk-backup-from-openai" # 可选:保留原 API 作为终极备份
)
response = client.call(
model="gpt-4.1",
messages=[{"role": "user", "content": "测试消息"}],
temperature=0.7
)
print(f"响应: {response.choices[0].message.content}")
五、ROI 估算与长期收益
5.1 成本对比计算器
以我自己的项目为例,展示真实节省:
- 日均 Token 消耗:1,000,000 input + 500,000 output
- 使用 DeepSeek V3.2:output 仅 $0.42/MTok
- 汇率节省:(¥7.3 - ¥1) / ¥1 = 730%
- 月均节省:约 ¥12,000 - ¥35,000
"""
ROI 计算器 - 估算迁移后的收益
"""
def calculate_savings(
daily_input_tokens: int = 1_000_000,
daily_output_tokens: int = 500_000,
days_per_month: int = 30,
# 假设 70% 用 DeepSeek,30% 用 GPT
deepseek_ratio: float = 0.7,
gpt_ratio: float = 0.3
) -> dict:
# DeepSeek V3.2 价格
deepseek_input = 0 # HolySheep 官方标注 input 免费
deepseek_output_price = 0.42 / 1_000_000 # $0.42/MToken
# GPT-4.1 价格
gpt_price = 8 / 1_000_000 # $8/MToken
# 官方汇率 vs HolySheep 汇率
official_rate = 7.3 # ¥7.3 = $1
holysheep_rate = 1.0 # ¥1 = $1
# 每日成本
daily_deepseek = daily_output_tokens * deepseek_ratio * deepseek_output_price
daily_gpt = daily_output_tokens * gpt_ratio * gpt_price
daily_cost_official = (daily_deepseek + daily_gpt) * official_rate
daily_cost_holysheep = (daily_deepseek + daily_gpt) * holysheep_rate
monthly_saving = (daily_cost_official - daily_cost_holysheep) * days_per_month
return {
"月输入 Token": daily_input_tokens * days_per_month,
"月输出 Token": daily_output_tokens * days_per_month,
"官方月成本": f"¥{daily_cost_official * days_per_month:.2f}",
"HolySheep 月成本": f"¥{daily_cost_holysheep * days_per_month:.2f}",
"月节省": f"¥{monthly_saving:.2f}",
"年节省": f"¥{monthly_saving * 12:.2f}",
"节省比例": f"{(1 - 1/official_rate) * 100:.1f}%"
}
运行计算
result = calculate_savings()
print("=" * 40)
print("迁移收益分析")
print("=" * 40)
for key, value in result.items():
print(f"{key}: {value}")
print("=" * 40)
print(f"✓ 仅汇率一项,年节省超过 ¥{result['年节省']}")
print(f"✓ 再加上 DeepSeek V3.2 的低价优势,性价比爆棚")
5.2 长期收益展望
- 成本优化:预计年度节省 15-40 万元(取决于用量)
- 性能提升:延迟从 200ms+ 降至 50ms,用户体验显著改善
- 运维简化:微信/支付宝充值,无需境外支付渠道
- 扩展弹性:HolySheep 支持的模型越来越多,后续切换成本为零
六、常见报错排查
在我迁移过程中遇到的三个高频问题及解决方案:
错误 1:AuthenticationError - API Key 无效
# 错误信息
openai.AuthenticationError: Incorrect API key provided: YOUR_HOLYSHEEP_API_KEY
原因排查
1. Key 复制不完整(开头/结尾可能有空格)
2. 使用了错误的 Key(比如 OpenAI 的旧 Key)
3. Key 未在控制台激活
解决方案
import os
方式 1:确保环境变量正确设置
API_KEY = os.environ.get("HOLYSHEEP_API_KEY", "").strip()
if not API_KEY.startswith("hs_"):
raise ValueError("请使用 HolySheep 专用的 API Key(以 hs_ 开头)")
方式 2:直接在代码中验证 Key 格式
def validate_api_key(key: str) -> bool:
if not key:
return False
if len(key) < 20:
return False
# HolySheep Key 验证(示例)
return key.startswith("hs_") or len(key) == 32
方式 3:测试 API 连通性
from openai import OpenAI
client = OpenAI(api_key=API_KEY, base_url="https://api.holysheep.ai/v1")
models = client.models.list()
print(f"✓ API Key 验证成功,可用模型数: {len(models.data)}")
错误 2:RateLimitError - 请求被限流
# 错误信息
openai.RateLimitError: Rate limit reached for gpt-4.1 in region:.Global
原因排查
1. 短期内请求频率超过限制
2. 账户余额不足导致降级限流
3. 未购买对应模型的用量包
解决方案
import time
from openai import RateLimitError
def call_with_retry(client, model, messages, max_retries=5):
"""带退避重试的调用"""
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model=model,
messages=messages
)
return response
except RateLimitError as e:
wait_time = 2 ** attempt # 指数退避: 1s, 2s, 4s, 8s, 16s
print(f"⚠ 触发限流,等待 {wait_time}s 后重试...")
time.sleep(wait_time)
except Exception as e:
raise e
raise Exception(f"重试 {max_retries} 次后仍然失败")
使用令牌桶算法实现更精细的限流控制
import threading
class TokenBucket:
def __init__(self, rate: float, capacity: int):
self.rate = rate # 每秒补充的令牌数
self.capacity = capacity
self.tokens = capacity
self.last_update = time.time()
self.lock = threading.Lock()
def acquire(self, tokens: int = 1) -> bool:
with self.lock:
now = time.time()
elapsed = now - self.last_update
self.tokens = min(self.capacity, self.tokens + elapsed * self.rate)
self.last_update = now
if self.tokens >= tokens:
self.tokens -= tokens
return True
return False
def wait_for_token(self, tokens: int = 1):
while not self.acquire(tokens):
time.sleep(0.1)
使用示例:限制每秒 10 次请求
bucket = TokenBucket(rate=10, capacity=10)
def throttled_call(client, model, messages):
bucket.wait_for_token()
return client.chat.completions.create(model=model, messages=messages)
错误 3:TimeoutError - 请求超时
# 错误信息
httpx.ReadTimeout: HTTPX Request Timed Out
原因排查
1. 网络波动(尤其是跨境访问)
2. 请求体过大(上下文太长)
3. 模型生成内容过长(max_tokens 过大)
解决方案
from openai import OpenAI, Timeout
import httpx
方式 1:设置合理的超时时间
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.holysheep.ai/v1",
timeout=Timeout(
connect=10.0, # 连接超时 10s
read=60.0, # 读取超时 60s
write=10.0, # 写入超时 10s
pool=5.0 # 池超时 5s
)
)
方式 2:减少上下文长度
MAX_CONTEXT_TOKENS = 32000 # 根据模型限制调整
def truncate_messages(messages: list, max_tokens: int = MAX_CONTEXT_TOKENS) -> list:
"""智能截断消息,保留最近的关键对话"""
total_tokens = sum(len(msg["content"]) // 4 for msg in messages) # 粗略估算
if total_tokens <= max_tokens:
return messages
# 保留系统消息和最近的消息
system_msg = [msg for msg in messages if msg.get("role") == "system"]
other_msgs = [msg for msg in messages if msg.get("role") != "system"]
# 从后往前保留,直到达到限制
truncated = []
token_count = 0
for msg in reversed(other_msgs):
msg_tokens = len(msg["content"]) // 4
if token_count + msg_tokens > max_tokens:
break
truncated.insert(0, msg)
token_count += msg_tokens
return system_msg + truncated
方式 3:使用流式响应避免超时
def stream_response(client, model, messages, max_tokens=2048):
"""流式输出,即时显示进度"""
try:
stream = client.chat.completions.create(
model=model,
messages=messages,
max_tokens=max_tokens,
stream=True
)
full_response = ""
for chunk in stream:
if chunk.choices[0].delta.content:
content = chunk.choices[0].delta.content
print(content, end="", flush=True)
full_response += content
print() # 换行
return full_response
except TimeoutError:
print("⚠ 生成内容过长,已截断")
return full_response if 'full_response' in dir() else ""
测试超时配置
if __name__ ==