开源项目

aisuite

轻量级 Python 库,为多家生成式 AI 提供商提供统一的 Chat Completions API 和 Agents API,支持工具调用、MCP 协议,可一键切换模型(OpenAI、Anthropic、Google 等)。由吴恩达团队开源,内置的 OpenCoworker 桌面 agent 可作为实用参考实现,适合快速构建多模型交互和 agent 应用。MIT 许可,可商用。

README

NEW

OpenCoworker

一个驻留在你桌面上的 AI 智能体,基于 aisuite 构建。

OpenCoworker 是一个桌面 AI 智能体,不仅能对话,还能在你的电脑上进行深度研究并为你执行任务。它可以读取文件(经你许可)以获取上下文,读取/发送消息(Slack、电子邮件等),并创建真正的可交付成果,如 PDF 报告、文档、电子表格。它还支持定时自动化,例如每天为你提供新闻摘要。

需要自带 API 密钥(OpenAI、Anthropic、Google),或使用 Ollama 完全本地运行。你的数据保留在你的机器上。

⬇ 下载 macOS 版本   macOS 13+ (Apple Silicon)   

⬇ 下载 Windows 版本   Windows 10/11 (x64)  · 

快速入门: — 安装、连接模型、第一个任务、自动化。

其源码位于本仓库的 platform/ 目录下——这是一个在 aisuite 上构建你自己智能体框架的工作参考。


aisuite

PyPI 代码风格: black

aisuite 是一个轻量级 Python 库,用于构建基于 LLM 的应用,分为两层:一个统一的跨提供商的 Chat Completions API,以及在其之上的带工具和工具集的 Agents API。本仓库也是 OpenCoworker(一个使用 aisuite 构建的桌面 AI 同事)的所在地:

┌───────────────────────────────────────────────┐
│                 OpenCoworker                  │   用于执行日常任务的智能体框架
├───────────────────────────────────────────────┤
│        Agents API  ·  Toolkits  ·  MCP        │   在多个 LLM 上构建智能体
├───────────────────────────────────────────────┤
│             Chat Completions API              │   跨多个 LLM 提供商的统一 API
├────────┬───────────┬────────┬────────┬────────┤
│ OpenAI │ Anthropic │ Google │ Ollama │ 其他   │
└────────┴───────────┴────────┴────────┴────────┘
  • Chat Completions API — 一个统一的 OpenAI 风格接口,支持 OpenAI、Anthropic、Google、Mistral、Hugging Face、AWS、Cohere、Ollama、OpenRouter 等。通过更改一个字符串即可切换提供商。
  • Agents API · Toolkits · MCP — 为模型提供真实的 Python 函数作为工具,运行多轮循环,附加现成的工具集(文件、git、shell)或任何 MCP 服务器,并通过工具策略来控制整个过程。
  • OpenCoworker — 一个使用 aisuite 构建的桌面 AI 同事,以应用形式提供,用于日常任务。

安装

aisuite 库 (Python)

安装基础包,或包含计划使用的提供商的 SDK:

pip install aisuite               # 基础包,不包含提供商 SDK
pip install 'aisuite[anthropic]'  # 包含特定提供商的 SDK
pip install 'aisuite[all]'        # 包含所有提供商的 SDK

你还需为调用的提供商准备 API 密钥——Chat Completions 快速入门 涵盖了密钥设置和你的首次调用。

OpenCoworker 应用(桌面版)

下载安装程序并自带 API 密钥(或使用 Ollama 运行本地模型):

⬇ macOS (Apple Silicon)  ·  ⬇ Windows 10/11 (x64)  ·  OpenCoworker 快速入门


Chat Completions — 跨提供商的统一 API

聊天 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": "以海盗英语回复。"},
    {"role": "user", "content": "给我讲个笑话。"},
]

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 — 安装、密钥设置、本地模型及更多示例。


Agents — 为模型提供真实工具

aisuite 将工具调用简化成一行代码:传入纯 Python 函数,它会自动生成 schema,执行调用,并将结果返回给模型。

使用 max_turns 进行工具调用

def will_it_rain(location: str, time_of_day: str):
    """检查某个地点在当天指定时间是否会下雨。

    Args:
        location (str): 城市名称
        time_of_day (str): 时间,格式 HH:MM。
    """
    return "YES"

client = ai.Client()
response = client.chat.completions.create(
    model="openai:gpt-4o",
    messages=[{
        "role": "user",
        "content": "我住在旧金山。你能查一下天气,然后为我在下午2点安排一次户外野餐吗?"
    }],
    tools=[will_it_rain],
    max_turns=2  # 最大往返工具调用次数
)
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

对于运行时间更长、结构化的任务,我们有第一类 Agents API:声明一个 agent,用 Runner 运行它,并附加 toolkits——预构建的沙盒化工具族,用于文件、git 和 shell:

import aisuite as ai
from aisuite import Agent, Runner

agent = Agent(
    name="repo-helper",
    model="anthropic:claude-sonnet-4-6",
    instructions="你是一个细心的仓库助手。使用你的工具根据代码来回答问题。",
    tools=[*ai.toolkits.files(root="."), *ai.toolkits.git(root=".")],
)

result = Runner.run(agent, "最近一次提交更改了什么?用3个要点总结。")
print(result.final_output)

Agents API 还提供了生产级框架所需的组件:

  • 工具策略 — RequireApprovalPolicy、白名单/黑名单,或者你自己编写的可调用函数,用于决定哪些工具调用可以执行。
  • 状态存储 — 持久化并恢复运行(内存、文件或 Postgres),在进程间继续对话。
  • 产物与追踪 — 捕获 agent 产生的内容以及它走过的每一步。

MCP 工具

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": "列出当前目录中的文件"}],
    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 深入介绍。


扩展 aisuite:添加新提供商

可以通过实现轻量级适配器来添加新提供商。系统使用命名约定进行发现:

元素 约定
模块文件 <provider>_provider.py
类名 <Provider>Provider(首字母大写)

示例:

# providers/openai_provider.py
class OpenaiProvider(BaseProvider):
    ...

此约定确保了统一性,并实现了新集成的自动加载。


贡献

欢迎贡献。请查看贡献指南并加入我们的 Discord 参与讨论。


许可证

基于 MIT 许可证 发布——免费用于商业和非商业用途。

开源项目andrewyng2026-06-13原文

相关内容