snaily
548dcccf2f
Merge pull request #286 from 4Crusaders:fix/gemini-structured-output-tools-conflict
...
fix: 修复Gemini模型不支持同时使用tools和结构化输出的问题
2025-08-16 01:13:18 +08:00
snaily
b52092a72b
Merge pull request #300 from zenyanbo/main
2025-08-16 01:06:18 +08:00
zenyanbo
f58ae2b340
feat: add support for the n parameter in OpenAI-compatible requests. Now, when you make a request to the /v1/chat/completions endpoint with the n parameter, it will be correctly mapped to candidateCount in the Gemini API request, allowing you to receive multiple completions.
2025-08-11 17:39:18 +08:00
4Crusaders
f51a4d20ad
fix: 修复Gemini模型不支持同时使用tools和结构化输出的问题
...
- 添加_is_structured_output_request函数检测是否为结构化JSON输出请求
- 当检测到请求指定responseMimeType为application/json时,跳过gemini-balance主动添加的所有工具
- 仅在非结构化输出场景下,gemini-balance才会自动添加codeExecution、googleSearch、urlContext等工具
- 解决"Tool use with a response mime type: 'application/json' is unsupported"错误
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com >
2025-08-06 14:07:33 +08:00
cxyfer
b89d3ea144
feat: Add Gemini API embeddings compatibility with embedContent and batchEmbedContents methods
2025-07-30 02:28:53 +08:00
snaily
6f714649a7
fix: 修复以第一个key获取模型列表,如果key失效将无法获取模型的问题
2025-07-25 17:07:15 +08:00
snaily
ae775760dd
feat(keys): 按错误码分组展示校验失败的密钥
...
- **功能增强 (密钥状态页面):**
- 在密钥校验结果弹窗中,将校验失败的密钥按照HTTP错误码进行分组展示。
- 每个错误码分组都是可折叠的,并显示该分组下的密钥数量。
- 为每个分组添加了独立的“复制”按钮,方便用户一键复制相同错误类型的所有密钥。
- 优化了错误详情的展示方式,使其在分组内切换,界面更整洁。
- 此项改动极大地改善了当大量密钥校验失败时的用户体验,能够更快速地定位和处理问题。
- **错误修复 (OpenAI服务):**
- 修复了 `openai_chat_service.py` 中一个正则表达式的错误。该正则是用于从错误日志中提取HTTP状态码,错误的 `\\d+` 已被修正为 `\d+`,确保能正确捕获状态码。
2025-07-25 16:44:27 +08:00
snaily
d475ccdece
refactor: 移除未使用的 Tuple 导入
2025-07-25 12:18:20 +08:00
snaily
4eed3a48db
Merge pull request #244 from icesixgod:feature/proxy-health-check
...
feat: 实现代理健康检查功能
2025-07-25 12:16:08 +08:00
snaily
2270f6d998
refactor: 重构密钥状态页面为客户端动态加载
...
- 新增 key_routes.py 分离密钥相关路由逻辑
- 将密钥列表从服务器端渲染改为 JavaScript 动态加载
- 优化 keys_status 页面错误处理,提供默认数据结构
- 在 KeyManager 中添加 get_all_keys_with_fail_count 方法
- 移除服务器端模板中的静态密钥渲染代码
这次重构提升了页面加载性能和用户体验,同时改善了错误处理机制。
2025-07-24 23:23:11 +08:00
icesixgod
9f5892a987
feat: 实现代理健康检查功能
...
添加完整的代理检测系统,包括:
后端功能:
- 新增代理检测服务模块 (app/service/proxy/)
* ProxyCheckService: 核心检测逻辑,支持HTTP/HTTPS/SOCKS5代理
* 内置缓存机制,避免重复检测 (10秒缓存期)
* 支持并发检测,可配置最大并发数
- 新增4个API端点 (app/router/config_routes.py):
* POST /api/config/proxy/check - 单个代理检测
* POST /api/config/proxy/check-all - 批量代理检测
* GET /api/config/proxy/cache-stats - 缓存统计
* POST /api/config/proxy/clear-cache - 清空缓存
前端功能:
- 代理列表中每项添加状态图标和检测按钮
- 支持单个代理实时检测
- 新增检测所有代理功能按钮
- 代理检测结果模态框,显示:
* 检测进度条和状态
* 可用/不可用代理统计
* 详细的检测结果列表(响应时间、错误信息)
* 重试失败代理功能
技术特性:
- 10秒超时机制,避免长时间等待
- 异步并发检测,提升批量检测效率
- 缓存机制减少重复请求
- 完整的错误处理和用户友好提示
- 响应式UI设计,支持实时状态更新
2025-07-24 19:41:03 +08:00
Shuai Lin
6abda7d902
security: Implemented API key redaction for secure logging
...
- Add redact_key_for_logging() helper function to show only first/last 6 chars
- Fix API key exposure in app/service/key/key_manager.py line 68
- Apply key redaction across all Python files with API key logging
- Standardize logging security across 17 files including routers, services, handlers
2025-07-21 02:03:29 +08:00
snaily
07481ca972
fix: 修复_build_payload函数中的条件逻辑,确保正确处理思考预算配置
2025-07-20 19:29:19 +08:00
snaily
cdb85ef9b7
fix: 更新思考预算配置,使用_get_real_model函数获取真实模型
2025-07-20 13:42:36 +08:00
snaily
7006522c13
feat: 修复gemini-cli调用工具失败的问题
2025-07-20 13:19:59 +08:00
snaily
57d861b578
feat: 增加URL上下文理解功能
...
本次提交引入了一项新功能,允许模型在对话中理解所提供URL的上下文。
主要变更:
- **配置**:新增了 `URL_CONTEXT_ENABLED` 和 `URL_CONTEXT_MODELS` 两个配置项,用于控制此功能的开关和支持的模型列表。
- **后端服务**:在 `gemini_chat_service`、`openai_chat_service` 和 `vertex_express_chat_service` 中,为支持的模型动态添加 `urlContext` 工具。
- **前端界面**:在配置编辑器页面增加了相应的UI控件,方便用户启用/禁用该功能并管理支持的模型列表。
- **文档**:更新了 `.env.example`、`README.md` 和 `README_ZH.md`,包含了新配置项的说明。
2025-07-20 01:46:18 +08:00
snaily
99664298b9
fix: 更新思考配置,针对gemini-2.5-pro模型设置思考预算为128
2025-07-19 22:20:55 +08:00
snaily
2a5744d1c4
fix: 移除请求payload构建中的by_alias参数
2025-07-19 01:38:48 +08:00
snaily
5a98a701cb
fix: 修复生成配置字段名称以符合API要求
2025-07-19 00:40:44 +08:00
snaily
fb572fa849
chore: 移除不必要的json导入
2025-07-18 22:33:46 +08:00
snaily
c0a473ed19
Merge branch 'pr/hewenyu/220'
2025-07-18 16:47:22 +08:00
hewenyu
445ef49dc8
fix # 219
...
修复token的问题
2025-07-18 10:50:52 +08:00
snaily
32d4c60541
fix: 修正Callirhoe拼写错误为Callirrhoe
...
refactor: 优化常量格式,提升可读性
2025-07-17 22:07:18 +08:00
snaily
23f865be07
Merge branch 'pr/cxyfer/200'
2025-07-17 21:30:35 +08:00
cxyfer
5d55325c12
refactor: Centralize API base URL and clean up
...
Replaces hardcoded Google API base URLs with `settings.BASE_URL` for improved configurability and maintainability across services.
Removes unused imports and variables from various modules to reduce code bloat and enhance readability.
2025-07-16 04:50:55 +08:00
zzh
cfb682ae3c
修复parts的错误
2025-07-16 01:25:51 +09:00
zzh
abae90b16d
删除冗余代码
2025-07-16 00:13:30 +09:00
zzh
470fc37f26
普通文本生成 案例模型修改。
2025-07-15 18:47:50 +09:00
zzh
7a7caef1a6
修改README.md对openai兼容tts的案例支持
2025-07-15 18:39:24 +09:00
zzh
a6aecb5d89
添加对gemini原生格式TTS的支持
2025-07-15 18:04:16 +09:00
zzh
1a6feae23b
Update multi-speaker TTS README
...
- Reflect current smart detection implementation
- Remove outdated ENABLE_TTS environment variable references
- Add TTS systems comparison table
- Update usage examples with correct URLs
- Add intelligent routing flowchart
- Clarify zero-configuration approach
- Update feature list to match current implementation
2025-07-15 15:55:47 +09:00
zzh
af5b2fa2c9
Clean up TTS module dependencies
...
- Remove references to deleted tts_config.py
- Simplify tts_routes.py to directly return TTSGeminiChatService
- Update __init__.py imports
- Prepare for multi-speaker TTS testing
2025-07-15 15:44:55 +09:00
zzh
9a8e4c8e15
Fix TTS payload - remove tools and safetySettings for TTS requests
2025-07-15 15:05:40 +09:00
zzh
fe721116e2
添加对gemini多人语音功能的支持
2025-07-15 14:39:33 +09:00
cxyfer
c9fca1561c
Merge remote-tracking branch 'origin/main' into feature/upload-compatibility
2025-07-12 03:36:46 +08:00
cxyfer
5eb2dfd822
feat: Add Files API support with upload, list, get and delete operations
...
- Implement complete Files API compatible with Gemini API format
- Support resumable file uploads with chunked transfer (tested with 15MB video)
- Create file management service with database tracking
- Add file domain models and API request/response objects
- Implement file routes with proper authentication
- Use fixed API key for Files API requests (due to Google API restrictions)
- Support file state management (PROCESSING, ACTIVE, FAILED)
- Add scheduled task for automatic expired file cleanup
- Integrate seamlessly with existing key management and load balancing
2025-07-12 03:33:39 +08:00
snaily
a6cfc12443
feat: 更新响应处理逻辑以支持推理内容
...
- 修改了 response_handler.py 中的 _handle_openai_stream_response 和 _handle_openai_normal_response 方法,增加了对推理内容 (reasoning_content) 的支持。
- 更新了 _extract_result 方法的返回值,确保能够提取推理内容。
- 在 gemini_chat_service.py 和 openai_chat_service.py 中,调整了生成配置以包含思考过程的选项。
- 在 vertex_express_chat_service.py 中,增强了对客户端思考配置的处理逻辑,确保优先使用客户端提供的配置。
2025-07-10 21:21:55 +08:00
snaily
f6d64dd850
feat: 添加 TTS 语音名称常量并更新 TTS 服务逻辑
...
- 在 constants.py 中新增 TTS_VOICE_NAMES 列表,包含多个语音名称。
- 更新 tts_service.py 中的语音配置逻辑,确保使用请求中的语音名称(如果有效),否则回退到默认配置。
2025-07-10 01:03:20 +08:00
snaily
eed62caa78
refactor: 移除 ApiClient 中的 count_tokens 抽象方法
...
- 从 ApiClient 类中删除了 count_tokens 方法的抽象定义,以简化接口。
2025-07-10 00:53:06 +08:00
ripper
204d41d6f3
feat: add JSON Schema cleaning function to remove unsupported fields in Gemini API
2025-07-09 10:29:42 +08:00
ripper
858df0548e
fix: ensure generationConfig is not None in payload
2025-07-09 10:17:32 +08:00
snaily
d234f826f4
chore: 更新 Vertex API 相关注释和正则表达式为 Vertex Express API,确保一致性和准确性。修改了多个文件中的相关描述和提示信息,以反映 API 名称的变化。
2025-07-08 15:27:16 +08:00
snaily
231b69ecf8
feat: 添加自定义 Headers 功能
...
- 在配置中添加 `CUSTOM_HEADERS` 选项,允许用户定义全局请求头。
- 更新 API 客户端,将自定义 `header` 应用于所有出站请求。
- 在配置页面上为 `CUSTOM_HEADERS` 添加了完整的前端编辑功能。
2025-07-08 13:58:05 +08:00
lc631017672
da8f7539a1
Fix: Handle empty parts in CountTokensRequest and improve payload filtering
2025-07-07 14:13:16 +08:00
lc631017672
1199d7cc3c
feat: Add support for countTokens API and improve debug logging
2025-07-07 10:08:57 +08:00
ry
8a827d2acb
feat: 支持CloudFlare图床自定义上传文件夹路径
...
- 新增CLOUDFLARE_IMGBED_UPLOAD_FOLDER环境变量配置
- 用户可通过该配置项指定图片在CloudFlare图床中的上传路径
2025-07-05 23:32:45 +08:00
snaily
f38b5ae870
feat: 添加TTS相关配置和功能
...
- 在.env.example中添加TTS模型、语音名称和语速的配置选项
- 更新README文件,增加TTS相关配置的说明
- 在配置类中添加TTS相关设置
- 新增TTS请求模型以支持文本转语音功能
- 更新智能路由中间件以支持音频请求
- 在路由中添加处理TTS请求的API接口
- 更新前端配置编辑器以支持TTS配置选项
2025-07-05 00:47:55 +08:00
Wangnov
5ecce8e0fe
fix: 使用Union替代类型注解中的管道符号,使python3.9版本不报错
2025-06-30 17:37:02 +08:00
snaily
38dbcd1643
fix: 更新API请求URL,增加pageSize参数以支持更大模型列表的获取
2025-06-17 23:30:36 +08:00
sk163
b72298fef4
feat: 增加了代理列表使用策略选项,对于同一个API_KEY可以使用固定代理
2025-06-14 14:36:11 +08:00