andrewyng/aisuite

GitHub Trending (daily) 工具

摘要

andrewyng/aisuite 是一个轻量级的 Python 库,提供了跨多个 LLM 提供商的统一聊天补全 API,以及带有工具的智能体 API。它还包括 OpenCoworker,一个用于日常任务的桌面 AI 智能体。

多个生成式 AI 提供商的简单统一接口
查看原文
查看缓存全文

缓存时间: 2026/06/13 15:25

andrewyng/aisuite 项目地址:https://github.com/andrewyng/aisuite

NEW

OpenCoworker

一款基于 aisuite 构建、常驻你桌面的 AI 智能体。

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

需要自备 API 密钥(OpenAI、Anthropic、Google),或通过 Ollama 完全本地运行。你的数据始终保留在本地设备中。

⬇ 下载 macOS 版本 (https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg) macOS 13+(Apple Silicon)

⬇ 下载 Windows 版本 (https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe) Windows 10/11(x64)·

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

其源代码位于本仓库的 platform/ 目录下——为在 aisuite 上构建你自己的智能体开发框架提供可参考的实现。


aisuite

PyPI (https://pypi.org/project/aisuite/) 代码风格:black (https://github.com/psf/black)

aisuite 是一个轻量级的 Python 库,用于与大语言模型(LLM)交互,它包含两层:一个跨提供商的统一 Chat Completions API,以及一个在其之上集成了工具(tools)和工具包(toolkits)的 Agents API

本仓库同时也是 OpenCoworker 的代码所在——一款使用 aisuite 构建的桌面 AI 同事:

┌───────────────────────────────────────────────┐
│           OpenCoworker                        │ 用于执行日常任务的智能体框架
├───────────────────────────────────────────────┤
│   Agents API · Toolkits · MCP                │ 跨多个 LLM 构建智能体
├───────────────────────────────────────────────┤
│   Chat Completions API                       │ 跨多个 LLM 提供商的统一接口
├────────┬───────────┬────────┬────────┬────────┤
│ OpenAI │ Anthropic │ Google │ Ollama │ 其他   │
└────────┴───────────┴────────┴────────┴────────┘
  • Chat Completions API — 针对 OpenAI、Anthropic、Google、Mistral、Hugging Face、AWS、Cohere、Ollama、OpenRouter 等提供商的统一 OpenAI 风格接口。通过修改一个字符串即可切换提供商。
  • 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) (https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-macos-arm64.dmg) · ⬇ Windows 10/11(x64) (https://github.com/andrewyng/aisuite/releases/latest/download/OpenCoworker-windows-setup.exe) · OpenCoworker 快速入门


Chat Completions — 跨提供商的统一 API

Chat API 为模型交互提供高层抽象。它以提供商标无关的方式支持所有核心参数(temperaturemax_tokenstools 等),并标准化请求和响应结构,让你专注于逻辑而非 SDK 差异。

模型名称使用 <provider>:<model> 格式;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 函数,它会自动生成模式、执行调用,并将结果返回给模型。

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:一次性声明一个智能体,通过 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, "最后一次提交改了什么?用三个要点总结。")
print(result.final_output)

Agents API 还提供了生产环境所需的组件:

  • 工具策略(Tool policies)RequireApprovalPolicy、允许/拒绝列表,或你自定义的可调用对象,用于决定哪些工具调用可以执行。
  • 状态存储(State stores) — 持久化并恢复运行(内存、文件或 Postgres),支持跨进程继续对话。
  • 工件与追踪(Artifacts & tracing) — 记录智能体生成的内容及其每一步操作。

MCP 工具

aisuite 原生支持模型上下文协议(Model Context Protocol, https://modelcontextprotocol.io/docs/getting-started/intro),因此任何 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.py
类名Provider(首字母大写)

示例:

# providers/openai_provider.py

class OpenaiProvider(BaseProvider):
    ...

此约定可确保一致性,并能自动加载新的集成。


贡献

欢迎贡献!请查阅贡献指南,并加入我们的 Discord 进行讨论。


许可证

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

相似文章

更节省token、更强大且更快的浏览器使用

Reddit r/openclaw

BetterWright 是一个开源工具,通过更节省token、更快且更不易被机器人检测系统标记来改进浏览器自动化。它可以与OpenClaw等智能体设置集成,以增强智能体能力。

数学的至暗时刻

Hacker News Top

一位数学家描述了一场由近期LLM生成的长期猜想反例所引发的精神危机,认为数学发现中的人类体验至关重要且受到威胁。

语言作为设计的潜在空间

Lobsters Hottest

本文探讨了人类语言是一种设计的潜在空间,它将推理约束为模式匹配和符号操作,并论证了LLM无法创造新语言来解决现有语言之外的问题。