New
This commit is contained in:
64
internal/models/request.go
Normal file
64
internal/models/request.go
Normal file
@@ -0,0 +1,64 @@
|
||||
// Filename: internal/models/request.go
|
||||
package models
|
||||
|
||||
// GeminiRequest 对应客户端发来的JSON请求体
|
||||
type GeminiRequest struct {
|
||||
Contents []GeminiContent `json:"contents"`
|
||||
GenerationConfig GenerationConfig `json:"generationConfig,omitempty"`
|
||||
SafetySettings []SafetySetting `json:"safetySettings,omitempty"`
|
||||
Tools []Tool `json:"tools,omitempty"`
|
||||
}
|
||||
|
||||
// GeminiContent 包含角色和内容部分
|
||||
type GeminiContent struct {
|
||||
Role string `json:"role,omitempty"`
|
||||
Parts []Part `json:"parts"`
|
||||
}
|
||||
|
||||
// Part 代表内容的一个组成部分 (文本或内联数据)
|
||||
type Part struct {
|
||||
Text string `json:"text,omitempty"`
|
||||
InlineData *InlineData `json:"inlineData,omitempty"`
|
||||
}
|
||||
|
||||
// InlineData 用于多模态输入,如图像
|
||||
type InlineData struct {
|
||||
MimeType string `json:"mimeType"`
|
||||
Data string `json:"data"` // Base64-encoded data
|
||||
}
|
||||
|
||||
// GenerationConfig 控制模型的生成行为
|
||||
type GenerationConfig struct {
|
||||
Temperature float32 `json:"temperature,omitempty"`
|
||||
TopP float32 `json:"topP,omitempty"`
|
||||
TopK int `json:"topK,omitempty"`
|
||||
MaxOutputTokens int `json:"maxOutputTokens,omitempty"`
|
||||
StopSequences []string `json:"stopSequences,omitempty"`
|
||||
}
|
||||
|
||||
// SafetySetting 定义安全过滤的阈值
|
||||
type SafetySetting struct {
|
||||
Category string `json:"category"`
|
||||
Threshold string `json:"threshold"`
|
||||
}
|
||||
|
||||
// Tool 定义模型可以调用的外部工具
|
||||
type Tool struct {
|
||||
FunctionDeclarations any `json:"functionDeclarations,omitempty"`
|
||||
}
|
||||
|
||||
// ========= 用于智能网关流式响应解析的模型 =========
|
||||
// GeminiSSEPayload 是用于解析SSE(Server-Sent Events)事件中data字段的结构体
|
||||
// 它代表了从上游接收到的一个数据块。
|
||||
type GeminiSSEPayload struct {
|
||||
Candidates []*Candidate `json:"candidates"`
|
||||
}
|
||||
|
||||
// Candidate 包含了模型生成的内容和会话的结束原因
|
||||
type Candidate struct {
|
||||
// Content 里面包含了本次返回的具体文本内容
|
||||
Content *GeminiContent `json:"content"`
|
||||
// FinishReason 告知我们流结束的原因,例如 "STOP", "MAX_TOKENS" 等。
|
||||
// 这是我们智能重试逻辑判断的核心依据。
|
||||
FinishReason string `json:"finishReason"`
|
||||
}
|
||||
Reference in New Issue
Block a user