1. 项目定位与用途
Twilight AI 是一个轻量级、符合 Go 语言习惯的 AI SDK,受 Vercel AI SDK 启发。它提供统一、简洁的 API,让 Go 开发者能轻松集成多种 AI 提供商的能力,包括文本生成、流式处理、嵌入、图像、语音和工具调用。项目定位为 Go 生态中的 AI 集成基础设施,旨在降低使用门槛,提升代码可维护性,适用于从简单聊天机器人到复杂多步骤 AI 工作流的各类应用。
Twilight AI 是一个轻量级、符合 Go 语言习惯的 AI SDK,提供统一 API 访问 OpenAI、Anthropic、Google 等提供商。支持文本生成、流式传输、嵌入、图像处理、语音合成、工具调用及 MCP 集成。本文介绍项目定位、安装方式、使用示例及核心特性。
Twilight AI 是一个轻量级、符合 Go 语言习惯的 AI SDK,提供统一 API 访问多种 AI 提供商(如 OpenAI、Anthropic、Google),简化文本生成、流式处理、嵌入、图像、语音及工具调用等 AI 功能的集成与切换。
Twilight AI 是一个轻量级、符合 Go 语言习惯的 AI SDK,受 Vercel AI SDK 启发。它提供统一、简洁的 API,让 Go 开发者能轻松集成多种 AI 提供商的能力,包括文本生成、流式处理、嵌入、图像、语音和工具调用。项目定位为 Go 生态中的 AI 集成基础设施,旨在降低使用门槛,提升代码可维护性,适用于从简单聊天机器人到复杂多步骤 AI 工作流的各类应用。
主要解决 AI 提供商 API 碎片化问题。不同服务商(如 OpenAI、Anthropic)有各自的接口规范、认证方式和数据模型,直接集成导致代码耦合、切换困难。Twilight AI 通过抽象 Provider 层,统一操作接口,使切换提供商只需修改配置;同时处理差异如消息格式、流式协议和错误处理,减少样板代码。此外,工具调用的自动 Schema 推断和多步执行循环,简化了复杂 AI 工作流的实现,避免开发者重复造轮子。
适用于需要 AI 能力的 Go 应用场景:后端服务集成聊天机器人或智能助手;多模型冗余与降级策略;实时流式响应处理(如 SSE);基于文本嵌入的语义搜索或聚类;AI 辅助内容生成(图像、语音);以及需要工具调用的自动化任务(如函数调用、MCP 集成)。特别适合追求类型安全、符合 Go 习惯且希望避免供应商锁定的项目,也适合需要人类审批敏感操作的企业环境。
安装需运行命令:`go get github.com/memohai/twilight-ai`。项目要求 Go 版本 1.25 或更高。配置方面,参考仓库中的 `.env.example` 文件设置对应提供商的环境变量,例如 OpenAI 的 `OPENAI_API_KEY` 和 `OPENAI_BASE_URL`。部分提供商(如 Anthropic)可能需要额外配置认证模式。安装后即可导入使用,无需额外编译步骤。
基本使用步骤:导入目标提供商包(如 `github.com/memohai/twilight-ai/provider/openai/completions`);使用选项(如 `WithAPIKey`)创建 provider 实例;通过 `provider.ChatModel(modelID)` 获取模型;调用 `sdk.GenerateText` 或 `sdk.StreamText` 并传入消息切片和选项。工具调用需用 `sdk.NewTool` 定义,SDK 自动处理执行循环。嵌入、图像、语音等功能均有对应包和函数。详细示例见 README 和 docs 目录下的指南。
项目采用模块化设计:核心 `sdk` 包定义客户端、消息、工具和选项;`provider` 目录实现各后端适配。关键特性包括:基于通道的流式传输,支持细粒度 `StreamPart` 类型;多步工具调用循环,可配置 `MaxSteps`;MCP 支持连接远程工具服务器;嵌入模块支持 OpenAI 与 Google;图像模块支持 DALL-E 系列;语音合成支持多家提供商。所有接口均经过测试,覆盖率较高,确保稳定性。仓库中未明确给出性能基准或生产环境建议,但设计上注重资源效率。
根据 README 和仓库结构,支持 OpenAI(包括 Completions、Responses、Embedding、Images、Speech)、Anthropic、Google Gemini、Edge TTS、ElevenLabs、Deepgram、Microsoft、Minimax、OpenRouter、Volcengine 等,以及任何 OpenAI 兼容端点。MCP 支持允许连接远程 MCP 服务器并暴露工具。
运行 `go get github.com/memohai/twilight-ai` 安装,需 Go 1.25+。配置环境变量参考 `.env.example`,例如设置 `OPENAI_API_KEY`。创建 provider 时使用对应包的 `WithAPIKey` 等选项。
导入提供商包(如 `provider/openai/completions`),创建 provider 实例,通过 `provider.ChatModel(modelID)` 获取模型,然后调用 `sdk.GenerateText` 或 `sdk.StreamText`,传入 `sdk.Message` 切片和选项(如 `WithMaxTokens`)。示例见 README 快速入门。
是的。工具调用通过 `sdk.NewTool` 定义,支持 Go 结构体,SDK 自动推断 JSON Schema 并处理多步执行循环,可配置 `MaxSteps` 和审批流。MCP 集成允许连接 MCP 服务器,将远程工具暴露为本地 `sdk.Tool`,实现跨服务器工具调用。
调用 `sdk.StreamText` 返回 `*StreamResult`,其 `Stream` 通道发送 `StreamPart` 类型(如 `TextDeltaPart`、`ToolCallPart`)。消费者循环读取通道处理各类型片段,实现实时流式响应。SDK 处理底层 SSE 或 WebSocket 协议差异,提供统一接口。