DedalusRunner 是 Dedalus SDK 的核心。它将本地工具、托管的 MCP 服务器、流式传输,以及来自任何提供商的任何模型编排到同一个智能体循环中。只需五行代码,就能构建你想要的任何智能体。
## 快速示例
报告错误代码
复制
询问AI
from dedalus_labs import AsyncDedalus, DedalusRunner
client = AsyncDedalus()
runner = DedalusRunner(client)
result = await runner.run(
input="东京的天气怎么样?",
model="anthropic/claude-sonnet-4-20250514",
mcp_servers=["windsornguyen/open-meteo-mcp"],
max_steps=5,
)
print(result.final_output)
参数
显示 核心
显示 核心
用户的 prompt,或一组 messages。对单轮请求使用字符串;对多轮会话使用 message 列表。
要使用的模型。格式:
provider/model-name(例如:openai/gpt-4o、anthropic/claude-sonnet-4-20250514)。传入列表以实现路由或回退行为。用于定义智能体行为和“人格”的 system prompt。
现有会话历史。与
result.to_input_list() 配合用于多轮会话。显示 Tools & MCP
显示 Tools & MCP
用于 MCP 服务器认证的凭证。
控制 tool 使用:
"auto"— 由模型决定(默认)"none"— 禁用工具"required"— 强制使用工具{"type": "function", "function": {"name": "..."}}— 强制使用特定 tool
显示 模型参数
显示 模型参数
采样温度(0–2)。值越高随机性越强。默认值因模型而异。
响应中的最大 token 数。
核采样(nucleus sampling)阈值(0–1),可作为 temperature 的替代方案。
按频率惩罚重复 token(-2.0 到 2.0)。
惩罚已经出现过的 token(-2.0 到 2.0)。
调整特定 token 的出现概率。将 token ID 映射到偏置值(-100 到 100)。
显示 输出控制
显示 输出控制
强制使用结构化输出。传入 Pydantic 模型或 JSON Schema。参见 Structured Outputs.
在结果中包含模型的意图分析。
显示 执行
显示 执行
显示 高级
显示 高级
用于动态模型选择或行为调整的运行时策略。
用于智能体路由和选择的属性。将属性名称映射到浮点数值。
每个模型的属性覆盖设置。将模型名称映射到属性字典。
限定智能体可使用的模型。
强制执行严格的模型校验。
输入/输出防护规则(guardrail)配置。
显示 调试
显示 调试
返回值
runner.run() 返回的响应对象。显示 属性
显示 属性
来自智能体的最终文本响应。
本地 tool 的执行结果。每个结果包含
name、result、step,以及可选的 error。来自 MCP 服务器 tool 调用的结果。
本次运行期间被调用的工具名称。
使用的智能体循环迭代次数。
包含 tool 调用在内的完整对话历史。对调试或继续对话非常有用。
模型的意图分析(仅在
return_intent=true 时存在)。final_output 的别名。final_output 的别名。显示 方法
显示 方法
返回一份对话历史的副本,以便用于后续运行,支持多轮对话。
Multi-turn Chat
报告错误代码
复制
询问AI
import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
messages: list[dict] = []
while True:
user_input = input("你: ").strip()
if not user_input:
break
messages.append({"role": "user", "content": user_input})
result = await runner.run(
model="openai/gpt-4o",
messages=messages,
)
messages = result.to_input_list()
print(f"助手: {result.final_output}\n")
asyncio.run(main())
Example Response
报告错误代码
复制
询问AI
{
"final_output": "东京目前的天气为 18°C,天空晴朗。",
"tool_results": [],
"mcp_results": [
{
"name": "get_current_weather",
"result": {"temperature": 18, "conditions": "clear"},
"server": "windsornguyen/open-meteo-mcp"
}
],
"tools_called": ["get_current_weather"],
"steps_used": 2,
"messages": [...]
}