andrewyng/aisuite
摘要
andrewyng/aisuite 是一个轻量级的 Python 库,提供了跨多个 LLM 提供商的统一聊天补全 API,以及带有工具的智能体 API。它还包括 OpenCoworker,一个用于日常任务的桌面 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 为模型交互提供高层抽象。它以提供商标无关的方式支持所有核心参数(temperature、max_tokens、tools 等),并标准化请求和响应结构,让你专注于逻辑而非 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、更强大且更快的浏览器使用
BetterWright 是一个开源工具,通过更节省token、更快且更不易被机器人检测系统标记来改进浏览器自动化。它可以与OpenClaw等智能体设置集成,以增强智能体能力。
数学的至暗时刻
一位数学家描述了一场由近期LLM生成的长期猜想反例所引发的精神危机,认为数学发现中的人类体验至关重要且受到威胁。
语言作为设计的潜在空间
本文探讨了人类语言是一种设计的潜在空间,它将推理约束为模式匹配和符号操作,并论证了LLM无法创造新语言来解决现有语言之外的问题。
开源权重AI正在经历它的Kubernetes时刻。我们不要搞砸了
文章将开源权重AI模型的崛起与Kubernetes相提并论,认为开源权重模型正成为AI创新的基础平台。它警告美国不要孤立自己,并鼓励开源权重AI生态系统中的竞争。
llama.cpp MTP推测解码简化:2026年7月在密集模型上大获成功,MoE上表现平平
对llama.cpp中原生MTP推测解码的分析表明,像Qwen3.6-27B这样的密集模型获得了显著的加速(1.4倍至2.2倍),但在MoE架构上结果不尽人意,由于每步开销已经很低,收益微乎其微。