122 lines
3.9 KiB
Go
122 lines
3.9 KiB
Go
|
|
package model
|
||
|
|
|
||
|
|
// ChatCompletionRequest OpenAI Chat Completion请求
|
||
|
|
type ChatCompletionRequest struct {
|
||
|
|
Model string `json:"model"`
|
||
|
|
Messages []Message `json:"messages"`
|
||
|
|
Temperature *float64 `json:"temperature,omitempty"`
|
||
|
|
TopP *float64 `json:"top_p,omitempty"`
|
||
|
|
N *int `json:"n,omitempty"`
|
||
|
|
Stream bool `json:"stream,omitempty"`
|
||
|
|
Stop interface{} `json:"stop,omitempty"`
|
||
|
|
MaxTokens *int `json:"max_tokens,omitempty"`
|
||
|
|
PresencePenalty *float64 `json:"presence_penalty,omitempty"`
|
||
|
|
FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"`
|
||
|
|
LogitBias map[string]float64 `json:"logit_bias,omitempty"`
|
||
|
|
User string `json:"user,omitempty"`
|
||
|
|
Tools []Tool `json:"tools,omitempty"`
|
||
|
|
ToolChoice interface{} `json:"tool_choice,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// Message 消息结构
|
||
|
|
type Message struct {
|
||
|
|
Role string `json:"role,omitempty"` // system, user, assistant, tool - omitempty让空字符串不被序列化
|
||
|
|
Content interface{} `json:"content,omitempty"`
|
||
|
|
Name string `json:"name,omitempty"`
|
||
|
|
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
|
||
|
|
ToolCallID string `json:"tool_call_id,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// MessageContent 消息内容(支持文本和图片)
|
||
|
|
type MessageContent struct {
|
||
|
|
Type string `json:"type"` // text, image_url
|
||
|
|
Text string `json:"text,omitempty"`
|
||
|
|
ImageURL *ImageURLInfo `json:"image_url,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ImageURLInfo 图片URL信息
|
||
|
|
type ImageURLInfo struct {
|
||
|
|
URL string `json:"url"`
|
||
|
|
Detail string `json:"detail,omitempty"` // auto, low, high
|
||
|
|
}
|
||
|
|
|
||
|
|
// Tool 工具定义
|
||
|
|
type Tool struct {
|
||
|
|
Type string `json:"type"` // function
|
||
|
|
Function FunctionDef `json:"function"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// FunctionDef 函数定义
|
||
|
|
type FunctionDef struct {
|
||
|
|
Name string `json:"name"`
|
||
|
|
Description string `json:"description,omitempty"`
|
||
|
|
Parameters interface{} `json:"parameters,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ToolCall 工具调用
|
||
|
|
type ToolCall struct {
|
||
|
|
Index *int `json:"index,omitempty"` // 流式响应中的索引
|
||
|
|
ID string `json:"id,omitempty"`
|
||
|
|
Type string `json:"type,omitempty"` // function
|
||
|
|
Function FunctionCall `json:"function"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// FunctionCall 函数调用
|
||
|
|
type FunctionCall struct {
|
||
|
|
Name string `json:"name"`
|
||
|
|
Arguments string `json:"arguments"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ChatCompletionResponse OpenAI Chat Completion响应
|
||
|
|
type ChatCompletionResponse struct {
|
||
|
|
ID string `json:"id"`
|
||
|
|
Object string `json:"object"`
|
||
|
|
Created int64 `json:"created"`
|
||
|
|
Model string `json:"model"`
|
||
|
|
Choices []Choice `json:"choices"`
|
||
|
|
Usage *Usage `json:"usage,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// Choice 选择项
|
||
|
|
type Choice struct {
|
||
|
|
Index int `json:"index"`
|
||
|
|
Message Message `json:"message,omitempty"`
|
||
|
|
Delta *Message `json:"delta,omitempty"`
|
||
|
|
FinishReason string `json:"finish_reason,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// Usage token使用情况
|
||
|
|
type Usage struct {
|
||
|
|
PromptTokens int `json:"prompt_tokens"`
|
||
|
|
CompletionTokens int `json:"completion_tokens"`
|
||
|
|
TotalTokens int `json:"total_tokens"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ChatCompletionChunk 流式响应chunk
|
||
|
|
type ChatCompletionChunk struct {
|
||
|
|
ID string `json:"id"`
|
||
|
|
Object string `json:"object"`
|
||
|
|
Created int64 `json:"created"`
|
||
|
|
Model string `json:"model"`
|
||
|
|
Choices []ChunkChoice `json:"choices"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ChunkChoice 流式选择项
|
||
|
|
type ChunkChoice struct {
|
||
|
|
Index int `json:"index"`
|
||
|
|
Delta Message `json:"delta"`
|
||
|
|
FinishReason string `json:"finish_reason,omitempty"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ErrorResponse 错误响应
|
||
|
|
type ErrorResponse struct {
|
||
|
|
Error ErrorDetail `json:"error"`
|
||
|
|
}
|
||
|
|
|
||
|
|
// ErrorDetail 错误详情
|
||
|
|
type ErrorDetail struct {
|
||
|
|
Message string `json:"message"`
|
||
|
|
Type string `json:"type"`
|
||
|
|
Code string `json:"code,omitempty"`
|
||
|
|
}
|