深入讲解Agentic workload与普通推理的区别,涵盖ReAct/plan-and-solve架构、上下文增长管理、函数调用可靠性及成本控制等工程难题。
Agentic workload 的核心是一个自主循环:语言模型生成一个思考、选择一个工具或动作、执行它,然后将结果反馈到上下文窗口中用于下一次迭代。这种模式通常通过 ReAct 或 plan-and-solve 架构实现,与标准推理在三个关键方面有所不同。首先,提示长度不是固定的——它随着每次工具调用和观察结果而增长。其次,模型必须可靠地输出结构化输出(通常是 JSON)以与外部 API 接口。第三,系统在多轮对话中是状态化的,要求基础设施能够在不降级的情况下处理长上下文窗口。
大多数生产环境的 Agentic 系统遵循三种模式之一。ReAct 模式将推理轨迹与工具调用交错,让模型能够观察中间结果并调整计划。Plan-and-solve 系统将推理与执行分离:一个推理模型起草分步计划,然后由工作模型或函数执行。多智能体系统将职责划分给专业模型(如规划器、编码器、验证器),通过编排层进行协调。
每种模式对推理后端有不同的需求。ReAct 需要低延迟流式传输,以便用户能够实时看到推理轨迹。Plan-and-solve 则受益于具有大上下文窗口的高容量推理模型。多智能体设置需要多样化的模型能力,从视觉理解到代码生成,通常在同一个请求生命周期内。
在生产环境中运行 Agent 不仅仅是需要一个聊天端点。你需要严格遵循 schema 的函数调用、用于确定性解析的 JSON 模式,以及当 Agent 处理截图或图表时的视觉能力。上下文窗口必须能够容纳系统提示、工具定义、对话历史和观察缓冲区,而不会发生截断。
可靠性同样重要。冷启动会为迭代工具循环带来不可接受的延迟。如果用户在 Agent 步骤之间等待几秒钟,系统就会让人感觉坏了。Oxlo.ai 以无冷启动的方式服务热门模型,因此 Agent 循环可以无中断地进行。该平台完全兼容 OpenAI SDK,这意味着你只需更改一个配置值,就可以将现有 Agent 框架指向 Oxlo.ai。
并非每个模型都能同等处理 Agentic 行为。你需要强大的指令遵循能力、稳健的工具使用格式,以及足够的上下文长度以在迭代中保持状态。
对于深度推理和复杂编码任务,DeepSeek R1 671B MoE 和 Kimi K2.6 是强有力的候选者。Kimi K2.6 还具有先进的 Agentic 编码和视觉能力,上下文窗口达 131K。Qwen 3 32B 专为多语言推理和 Agent 工作流而构建,非常适合全球化部署。对于需要持续一致性的长周期任务,GLM 5(744B MoE)在 Agentic 规划方面表现出色。Minimax M2.5 专注于编码和 Agentic 工具使用,而 DeepSeek V4 Flash 以 1M 上下文窗口和高效 MoE 架构提供接近开源推理最优的表现。
Oxlo.ai 在其平台上托管这些模型以及跨越七个类别的 45+ 其他模型,包括专用代码模型如 Qwen 3 Coder 30B 和视觉模型如 Kimi VL A3B。这种广度让你能够将不同的 Agent 步骤路由到专业后端,而无需管理多个提供商。
最快的原型方法是使用配置为 Oxlo.ai 的 OpenAI SDK。以下示例展示了一个使用 Qwen 3 32B 进行函数调用的 ReAct 风格循环。该 Agent 可以在返回最终答案之前搜索知识库并计算值。
import openai
import json
client = openai.OpenAI(
base_url="https://api.oxlo.ai/v1",
api_key="YOUR_OXLO_API_KEY"
)
tools = [
{
"type": "function",
"function": {
"name": "search_knowledge_base",
"description": "Search the company's knowledge base for relevant information",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "The search query"
}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "calculate",
"description": "Perform a calculation",
"parameters": {
"type": "object",
"properties": {
"expression": {
"type": "string",
"description": "Mathematical expression to evaluate"
}
},
"required": ["expression"]
}
}
}
]
messages = [
{"role": "system", "content": "You are a helpful assistant that can use tools to answer questions."},
{"role": "user", "content": "What is the result of 15 * 23 plus the number of planets in our solar system?"}
]
response = client.chat.completions.create(
model="qwen-3-32b",
messages=messages,
tools=tools,
tool_choice="auto"
)
# 处理工具调用
while response.choices[0].finish_reason == "tool_calls":
message = response.choices[0].message
messages.append(message)
# 执行工具调用
for tool_call in message.tool_calls:
if tool_call.function.name == "search_knowledge_base":
# 实际应用中这里会调用搜索 API
result = {"answer": "According to NASA, there are 8 planets in our solar system."}
elif tool_call.function.name == "calculate":
# 实际应用中这里会执行计算
result = {"answer": str(15 * 23)}
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": json.dumps(result)
})
# 继续对话获取下一个响应
response = client.chat.completions.create(
model="qwen-3-32b",
messages=messages,
tools=tools,
tool_choice="auto"
)
print(response.choices[0].message.content)