Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
217 changes: 217 additions & 0 deletions Gemini集成完成总结.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,217 @@
# Gemini API 集成完成总结

## 修改概述

本次修改为项目添加了 Google Gemini API 支持,使项目能够在已有的 DeepSeek、OpenAI 等模型基础上,同时支持 Gemini 系列模型的调用。

## 修改的文件

### 1. 新增文件

#### `base/src/main/java/com/tinyengine/it/service/app/adapter/GeminiApiAdapter.java`
- **作用**:Gemini API 格式适配器
- **功能**:
- 将 OpenAI 格式的请求转换为 Gemini API 格式
- 将 Gemini API 的响应转换为 OpenAI 兼容格式
- 支持消息格式转换(角色映射、内容格式转换)
- 支持图片理解功能
- 提供模型识别方法

#### `documents/gemini-integration.md`
- **作用**:Gemini API 集成文档
- **内容**:
- 详细的使用说明
- API 配置方法
- 各种使用示例
- 参数说明
- 错误处理指南
- 技术实现说明

#### `documents/gemini-examples.http`
- **作用**:API 调用示例集合
- **内容**:
- HTTP 请求示例
- Java 代码示例
- JavaScript/TypeScript 示例
- Python 示例
- curl 命令示例

### 2. 修改文件

#### `base/src/main/java/com/tinyengine/it/common/enums/Enums.java`
- **修改内容**:在 `FoundationModel` 枚举中添加了三个 Gemini 模型:
```java
GEMINI_PRO("gemini-pro"),
GEMINI_1_5_PRO("gemini-1.5-pro"),
GEMINI_1_5_FLASH("gemini-1.5-flash");
```

#### `base/src/main/java/com/tinyengine/it/config/AiChatConfig.java`
- **修改内容**:
- 添加 Gemini API URL 常量
- 添加 Gemini API 配置头信息处理(使用 `x-goog-api-key` 而非 `Authorization`)
- 为三个 Gemini 模型添加完整的配置信息

#### `base/src/main/java/com/tinyengine/it/service/app/impl/v1/AiChatV1ServiceImpl.java`
- **修改内容**:
- 导入 `GeminiApiAdapter` 类
- 修改 `chatCompletion` 方法,添加 Gemini 模型检测和特殊处理
- 更新 `normalizeApiUrl` 方法,支持 Gemini URL 格式
- 修改 `buildRequestBody` 方法,对 Gemini 请求进行格式转换
- 更新 `processStandardResponse` 方法,对 Gemini 响应进行格式转换
- 更新 `processStreamResponse` 方法签名,支持 Gemini 流式响应

## 技术实现

### 架构设计

采用**适配器模式**实现对不同 AI 模型 API 的统一支持:

```
客户端请求(OpenAI 格式)
AiChatV1ServiceImpl(检测模型类型)
GeminiApiAdapter(格式转换)
Gemini API(Google 格式)
GeminiApiAdapter(响应转换)
客户端响应(OpenAI 格式)
```

### 关键功能

1. **自动格式转换**
- 请求格式:OpenAI → Gemini
- 响应格式:Gemini → OpenAI
- 保持前端调用一致性

2. **角色映射**
- `user` → `user`
- `assistant` → `model`
- `system` → `user`(系统消息作为用户消息)

3. **内容格式转换**
- 文本消息转换
- 多模态内容转换(文本+图片)
- 工具调用消息处理

4. **配置灵活性**
- 支持通过请求参数动态配置
- 支持配置文件默认配置
- 支持多个 Gemini 模型版本

## 支持的功能

✅ 基础对话
✅ 多轮对话
✅ 流式响应
✅ 图片理解(gemini-1.5-pro 和 gemini-1.5-flash)
✅ 温度参数控制
✅ 最大 token 数控制
✅ 停止序列设置
✅ 系统提示词

## 使用方式

### 快速开始

1. **获取 API Key**
- 访问 [Google AI Studio](https://makersuite.google.com/app/apikey)
- 创建 API Key

2. **发送请求**
```bash
curl -X POST http://localhost:8080/app-center/api/ai/chat \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-1.5-pro",
"apiKey": "YOUR_API_KEY",
"messages": [{"role": "user", "content": "你好"}]
}'
```

3. **查看响应**
返回标准 OpenAI 格式的响应

### 模型选择建议

- **gemini-pro**:基础模型,适合一般对话
- **gemini-1.5-pro**:最强模型,支持长上下文,适合复杂任务
- **gemini-1.5-flash**:最快模型,适合需要快速响应的场景

## 兼容性

- ✅ 与现有的 DeepSeek、OpenAI 等模型完全兼容
- ✅ 不影响现有代码和功能
- ✅ 前端无需修改,使用统一的 API 格式
- ✅ 支持所有现有的参数和功能

## 测试建议

1. **单元测试**:测试 GeminiApiAdapter 的格式转换功能
2. **集成测试**:测试完整的请求-响应流程
3. **功能测试**:
- 基础对话测试
- 多轮对话测试
- 流式响应测试
- 图片理解测试(如需要)
- 错误处理测试

## 注意事项

1. **API Key 安全**
- 不要在代码中硬编码 API Key
- 建议使用环境变量或配置文件
- 注意 API Key 的权限控制

2. **网络访问**
- 确保服务器能访问 `generativelanguage.googleapis.com`
- 如在国内部署,可能需要网络代理

3. **配额管理**
- Gemini API 有调用配额限制
- 建议实现调用频率控制
- 监控 API 使用情况

4. **错误处理**
- 实现完善的错误处理机制
- 记录 API 调用日志
- 提供友好的错误提示

## 后续优化建议

1. **性能优化**
- 实现请求缓存机制
- 优化流式响应处理
- 添加连接池管理

2. **功能增强**
- 添加更多 Gemini 特性支持(如工具调用)
- 实现请求重试机制
- 添加请求超时控制

3. **监控和日志**
- 添加详细的调用日志
- 实现性能监控
- 添加错误统计和报警

4. **文档完善**
- 添加更多使用示例
- 完善 API 文档
- 添加常见问题解答

## 参考资源

- [Google Gemini API 官方文档](https://ai.google.dev/docs)
- [Google AI Studio](https://makersuite.google.com/)
- [Gemini API 定价](https://ai.google.dev/pricing)
- 项目内文档:`documents/gemini-integration.md`
- 使用示例:`documents/gemini-examples.http`

## 结论

本次集成成功为项目添加了 Google Gemini API 支持,通过适配器模式实现了与现有系统的无缝集成。项目现在支持多种主流 AI 模型,为用户提供了更多选择,提升了系统的灵活性和可扩展性。

Loading