feat(api): 添加多媒体内容支持并优化钱包计费系统
- 在 API 接口定义中为 video_url 和 audio_url 类型添加 mime_type 字段 - 实现 Google Gemini 客户端对视频和音频内容的支持,包括媒体类型检测和数据传输 - 添加 Gemini 客户端测试用例验证多媒体内容转换功能 - 重构 Playground 页面的媒体上传逻辑以支持 MIME 类型传递 - 实现钱包计费预留机制,确保任务执行前余额充足 - 添加钱包冻结余额管理,防止并发操作导致的超扣问题 - 实现计费预留释放逻辑,处理任务失败或取消情况下的资金返还 - 优化数据库事务处理,确保计费操作的原子性和一致性 - 添加数据库集成测试验证迁移脚本执行流程 - 统一 Google Gemini 相关模型提供商标识符映射
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package runner
|
||||
|
||||
import (
|
||||
"context"
|
||||
"testing"
|
||||
|
||||
"github.com/easyai/easyai-ai-gateway/apps/api/internal/clients"
|
||||
"github.com/easyai/easyai-ai-gateway/apps/api/internal/store"
|
||||
)
|
||||
|
||||
type namedClient string
|
||||
|
||||
func (namedClient) Run(context.Context, clients.Request) (clients.Response, error) {
|
||||
return clients.Response{}, nil
|
||||
}
|
||||
|
||||
func TestClientForMapsGoogleGeminiSpecToGeminiClient(t *testing.T) {
|
||||
service := &Service{clients: map[string]clients.Client{
|
||||
"gemini": namedClient("gemini"),
|
||||
"openai": namedClient("openai"),
|
||||
}}
|
||||
|
||||
candidates := []store.RuntimeModelCandidate{
|
||||
{SpecType: "google-gemini"},
|
||||
{SpecType: "openai", Provider: "gemini-openai"},
|
||||
{SpecType: "openai", BaseURL: "https://generativelanguage.googleapis.com/v1beta/openai"},
|
||||
}
|
||||
for _, candidate := range candidates {
|
||||
client := service.clientFor(candidate, false)
|
||||
if client != namedClient("gemini") {
|
||||
t.Fatalf("Gemini candidate should use gemini client, candidate=%+v got %T %[2]v", candidate, client)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user