使用Composio和Gemini TTS构建Google Sheets AI代理

本文详细介绍了如何利用Composio集成平台和Gemini文本转语音技术,构建一个能够与Google Sheets实时交互的AI代理。通过Next.js框架和Vercel AI SDK实现响应流式传输,让AI代理具备数据查询、修改和语音交互能力。

如何构建支持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
npm install

环境变量配置

 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仓库获取。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计