跳转到主要内容
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())

下一步

获取最新的 SDK

通过 模型上下文协议 (MCP) 将 以编程方式连接这些文档 到 Claude、VSCode 等,以获取实时解答。