Dedalus 帮助你构建和交付具备以下特性的智能体工作流:
- 与提供商无关:通过一个统一的 应用程序编程接口 API 即可使用 OpenAI、Anthropic、Google、xAI、DeepSeek 等多种服务。
- 原生支持 tool 和 模型上下文协议 (MCP):让模型调用本地函数和托管的 MCP 服务器。
- 可直接用于生产环境:支持流式传输、结构化输出、路由/交接以及运行时策略。
与模型聊天
发送一个 prompt,并从任意提供商/模型获得响应。
为模型装备工具
让模型调用你实现的带类型标注的 Python/TS 函数。
流式输出智能体结果
在生成时实时打印响应(非常适合 UI/CLI)。
添加 MCP 服务器
用一行代码即可连接托管的 MCP 服务器。
获取可靠的 JSON
根据模式验证模型输出(Pydantic/Zod)。
跨模型路由
提供多个模型;智能体可以按阶段进行路由/切换。
uv pip install dedalus-labs
## 设置 API 密钥
在 控制台 中获取 API 密钥,并将其设置为环境变量:
export DEDALUS_API_KEY="your-api-key"
或者使用 .env 文件:
DEDALUS_API_KEY=your-api-key
你的第一个请求
让我们一步一步来。
### 1) 与模型对话
import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
from dotenv import load_dotenv
load_dotenv()
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
response = await runner.run(
input="影响天气模式的关键因素有哪些?",
model="anthropic/claude-opus-4-6",
)
print(response.final_output)
if __name__ == "__main__":
asyncio.run(main())
### 2) 添加一个 MCP 服务器
这里我们接入一个常用的 MCP 服务器,并让模型调用它。
import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
from dotenv import load_dotenv
load_dotenv()
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
response = await runner.run(
input="What's the weather forecast for San Francisco this week?",
model="anthropic/claude-opus-4-6",
mcp_servers=["windsornguyen/open-meteo-mcp"], # 通过 Open-Meteo 获取天气预报
)
print(response.final_output)
if __name__ == "__main__":
asyncio.run(main())
### 3) 添加本地工具
使用类型注解和文档字符串定义一个函数,然后将其传递给 runner.run()。软件开发工具包(SDK)会自动提取该函数的 schema,并在模型决定调用该工具时负责执行。
import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
from dotenv import load_dotenv
load_dotenv()
def as_bullets(items: list[str]) -> str:
"""Format items as a bulleted list."""
return "\n".join(f"• {item}" for item in items)
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
response = await runner.run(
input=(
"获取旧金山的 7 天天气预报,"
"然后使用 as_bullets 将每日天气状况格式化为项目符号。"
),
model="anthropic/claude-opus-4-6",
mcp_servers=["windsornguyen/open-meteo-mcp"],
tools=[as_bullets],
)
print(response.final_output)
if __name__ == "__main__":
asyncio.run(main())
### 4) 流式传输的输出
import asyncio
from dedalus_labs import AsyncDedalus, DedalusRunner
from dedalus_labs.utils.stream import stream_async
from dotenv import load_dotenv
load_dotenv()
async def main():
client = AsyncDedalus()
runner = DedalusRunner(client)
stream = runner.run(
input="用一段话解释天气预报的工作原理,边写边进行流式传输。",
model="anthropic/claude-opus-4-6",
stream=True,
)
await stream_async(stream)
if __name__ == "__main__":
asyncio.run(main())
深入了解: 工具 · MCP 服务器 · 结构化输出 · 流式传输
获取最新的 SDK
Python 软件开发工具包(SDK)
dedalus-labs/dedalus-sdk-python
TypeScript 软件开发工具包(SDK)
dedalus-labs/dedalus-sdk-typescript
通过 模型上下文协议 (MCP) 将 以编程方式连接这些文档 到
Claude、VSCode 等,以获取实时解答。 Last modified on April 11, 2026