aisuite 提供统一 API 支持多个生成式 AI 模型,配套 OpenWorker 桌面工具可做深度研究和自动化任务。对需多模型集成的程序员很实用。
一个桌面 AI 同事,基于 aisuite 构建——现在在独立仓库中:andrewyng/openworker。
OpenWorker 进行聊天、深度研究,并在你的计算机上执行真实任务——读取文件(获得权限)、连接 Slack/邮件、生成 PDF、文档和电子表格,以及运行计划自动化。带上你自己的 API 密钥(OpenAI、Anthropic、Google),或使用 Ollama 完全本地运行;你的数据保留在你的机器上。
⬇ 下载 macOS 版本 macOS 13+ (Apple Silicon) · ⬇ 下载 Windows 版本 Windows 10/11 (x64) · 快速开始
OpenWorker 开发已迁移到新仓库。其源代码快照暂时保留在这里的 platform/ 目录下,将在未来版本中删除。
aisuite 是一个轻量级 Python 库,用于与 LLM 构建应用,分为两层:跨提供商的统一 Chat Completions API,以及在其之上带工具和工具包的 Agents API。aisuite 还驱动 OpenWorker,一个在独立仓库中开发的桌面 AI 同事:
┌───────────────────────────────────────────────┐
│ OpenWorker (separate repo) │ agent harness for doing everyday tasks
├───────────────────────────────────────────────┤
│ Agents API · Toolkits · MCP │ build agents across multiple LLMs
├───────────────────────────────────────────────┤
│ Chat Completions API │ one API across multiple LLM providers
├────────┬───────────┬────────┬────────┬────────┤
│ OpenAI │ Anthropic │ Google │ Ollama │ Others │
└────────┴───────────┴────────┴────────┴────────┘
Chat Completions API——为 OpenAI、Anthropic、Google、Mistral、Hugging Face、AWS、Cohere、Ollama、OpenRouter、Requesty 等提供的统一的、OpenAI 风格的接口。通过改变一个字符串来切换提供商。
Agents API · Toolkits · MCP——为模型提供真实的 Python 函数作为工具,运行多轮循环,附加现成的工具包(文件、git、shell)或任何 MCP 服务器,并用工具策略对所有这些进行治理。
OpenWorker——使用 aisuite 构建的桌面 AI 同事,作为应用程序交付用于日常任务。在独立仓库中开发。
安装基础包,或包含你计划使用的提供商的 SDK:
pip install aisuite # base package, no provider SDKs
pip install 'aisuite[anthropic]' # with a specific provider's SDK
pip install 'aisuite[all]' # with all provider SDKs
你还需要为你调用的提供商获得 API 密钥——Chat Completions 快速开始指南涵盖密钥设置和你的首次调用。
寻找 OpenWorker 桌面应用?下载在其发布页面上。
聊天 API 为模型交互提供高级抽象。它以供应商无关的方式支持所有核心参数(temperature、max_tokens、tools 等),并标准化请求和响应结构,以便你可以专注于逻辑而不是 SDK 差异。
模型名称使用格式 <provider>:<model-name>;aisuite 将调用路由到具有正确参数的正确提供商:
import aisuite as ai
client = ai.Client()
models = ["openai:gpt-4o", "anthropic:claude-3-5-sonnet-20240620"]
messages = [
{"role": "system", "content": "Respond in Pirate English."},
{"role": "user", "content": "Tell me a joke."},
]
for model in models:
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0.75
)
print(response.choices[0].message.content)
→ 快速开始:docs/chat-completions-quickstart.md——安装、密钥设置、本地模型和更多示例。
传递 stream=True 以从任何支持的提供商(OpenAI、Anthropic、Ollama 和 OpenAI 兼容端点)获得 OpenAI 风格的块的迭代器——相同的循环在所有提供商上都有效:
for chunk in client.chat.completions.create(model=model, messages=messages, stream=True):
print(chunk.choices[0].delta.content or "", end="", flush=True)
异步变体是 await client.chat.completions.acreate(..., stream=True),使用 async for 迭代。工具调用也流式传输:schema 字典和可调用对象照常传递给模型,块携带增量 delta.tool_calls 片段供你组装和执行(流式传输是手动工具调用——它不能与 max_turns 结合)。
aisuite 将工具调用转化为一行代码:传递纯 Python 函数,它会生成模式、执行调用并将结果反馈给模型。
def will_it_rain(location: str, time_of_day: str):
"""Check if it will rain in a location at a given time today.
Args:
location (str): Name of the city
time_of_day (str): Time of the day in HH:MM format.
"""
return "YES"
client = ai.Client()
response = client.chat.completions.create(
model="openai:gpt-4o",
messages=[{
"role": "user",
"content": "I live in San Francisco. Can you check for weather "
"and plan an outdoor picnic for me at 2pm?"
}],
tools=[will_it_rain],
max_turns=2 # Maximum number of back-and-forth tool calls
)
print(response.choices[0].message.content)
设置 max_turns 后,aisuite 发送你的消息、执行模型请求的任何工具调用、将结果返回给模型,并重复直到对话完成。response.choices[0].intermediate_messages 携带完整的工具交互历史,如果你想继续对话。
更喜欢完全手动控制?省略 max_turns 并传递 OpenAI 格式的 JSON 工具规范——aisuite 返回模型的工具调用请求,你自己运行循环。查看 examples/tool_calling_abstraction.ipynb 了解两种风格。
对于更长的、结构化的工作,有一个一类的 Agents API:声明一个代理一次,用 Runner 运行它,并附加工具包——文件、git 和 shell 的预构建、沙箱工具族:
import aisuite as ai
from aisuite import Agent, Runner
agent = Agent(
name="repo-helper",
model="anthropic:claude-sonnet-4-6",
instructions="You are a careful repo assistant. Use your tools to answer from the code.",
tools=[*ai.toolkits.files(root="."), *ai.toolkits.git(root=".")],
)
result = Runner.run(agent, "What changed in the last commit? Summarize in 3 bullets.")
print(result.final_output)
Agents API 还为你提供生产工具所需的片段:
aisuite 原生支持 Model Context Protocol,因此任何 MCP 服务器的工具都可以交给模型而无需样板(pip install 'aisuite[mcp]'):
client = ai.Client()
response = client.chat.completions.create(
model="openai:gpt-4o",
messages=[{"role": "user", "content": "List the files in the current directory"}],
tools=[{
"type": "mcp",
"name": "filesystem",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/directory"]
}],
max_turns=3
)
print(response.choices[0].message.content)
对于可重用的连接、安全过滤器和工具前缀,使用显式 MCPClient。
→ 快速开始:docs/agents-quickstart.md——手动工具处理、完整的 Agents API、策略、状态存储和深入的 MCP。
可以通过实现轻量级适配器来添加新提供商。系统使用命名约定进行发现:
# providers/openai_provider.py
class OpenaiProvider(BaseProvider):
...
此约定确保一致性并启用新集成的自动加载。
欢迎贡献。请查看贡献指南并加入我们的 Discord 进行讨论。
以 MIT 许可证发布——可自由用于商业和非商业用途。