如何构建支持Composio和Gemini TTS的Google Sheets AI代理
随着AI代理和代理系统的兴起,我们不再仅仅生成文本或图像,而是教AI如何采取行动。从更新CRM到管理任务,代理现在可以连接到真实工具并完成任务。
项目概述
在本教程中,您将构建一个能够说话、思考甚至使用Composio、Next.js和Gemini TTS更新Google Sheets的AI代理。
核心学习内容
- AI代理的基本概念
- 使用Composio为代理添加集成功能
- 通过Vercel AI SDK从Next.js API路由流式传输响应
- 使用Gemini文本转语音API
项目设置
克隆仓库
1
2
|
git clone https://github.com/shricodev/google-sheet-super-agent.git
cd google-sheet-super-agent
|
安装依赖
环境变量配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
# Gemini API密钥
GEMINI_API_KEY=
# Composio API密钥
COMPOSIO_API_KEY=
# Composio用户ID
COMPOSIO_GOOGLE_SHEET_USER_ID=
# Google Sheets认证配置ID
GOOGLE_SHEETS_AUTH_CONFIG_ID=
# Google Generative AI SDK密钥
GOOGLE_GENERATIVE_AI_API_KEY=
# 会话密钥
SESSION_SECRET=<secret_key_for_session>
|
核心组件
1. 初始化连接
1
2
3
4
|
const connection = await composio.connectedAccounts.initiate(
userID,
googleSheetAuthConfigID
);
|
2. Gemini TTS设置
由于Gemini API返回audio/L16格式音频,需要转换为WAV格式才能在浏览器中播放:
1
2
3
4
5
6
7
|
async function convertL16ToWav(pcmBuffer: Buffer): Promise<Buffer> {
// 音频格式转换逻辑
}
export async function POST(req: NextRequest) {
// TTS处理逻辑
}
|
3. 用户查询处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
const tools = await composio.tools.get(userID, {
toolkits: ["GOOGLESHEETS"]
});
const systemPrompt = `
您是一个智能Google Sheets助手,可以帮助用户分析、查询和操作电子表格数据。
工作表ID: ${sheetID}
用户ID: ${userID}
指南:
- 始终使用Google Sheets工具访问真实数据
- 基于实际数据提供清晰、可操作的见解
- 以清晰、专业的方式格式化响应
`;
|
技术实现细节
流式响应处理
1
2
3
4
5
6
7
8
9
|
const result = streamText({
model: google("gemini-2.5-pro"),
system: systemPrompt,
prompt,
tools: tools,
toolChoice: "auto",
});
return result.toUIMessageStreamResponse({ sendReasoning: true });
|
音频处理挑战
Gemini TTS API返回的L16 PCM格式需要转换为WAV格式,涉及以下技术细节:
- 单声道音频处理
- 24kHz采样率
- 16位PCM编码
项目演示
该代理能够:
- 读取Google Sheets数据
- 执行数据分析和操作
- 通过语音与用户交互
- 实时流式传输响应
注意事项
虽然该项目展示了AI代理的强大功能,但建议不要在生产环境中的重要电子表格上使用。AI模型可能选择错误的工具或完全搞乱表格,建议在非重要表格上进行测试。
完整源代码可在GitHub仓库获取。