mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
73 lines
2.4 KiB
Go
73 lines
2.4 KiB
Go
package mcp
|
|
|
|
// Message represents a conversation message
|
|
type Message struct {
|
|
Role string `json:"role"` // "system", "user", "assistant"
|
|
Content string `json:"content"` // Message content
|
|
}
|
|
|
|
// Tool represents a tool/function that AI can call
|
|
type Tool struct {
|
|
Type string `json:"type"` // Usually "function"
|
|
Function FunctionDef `json:"function"` // Function definition
|
|
}
|
|
|
|
// FunctionDef function definition
|
|
type FunctionDef struct {
|
|
Name string `json:"name"` // Function name
|
|
Description string `json:"description,omitempty"` // Function description
|
|
Parameters map[string]any `json:"parameters,omitempty"` // Parameter schema (JSON Schema)
|
|
}
|
|
|
|
// Request AI API request (supports advanced features)
|
|
type Request struct {
|
|
// Basic fields
|
|
Model string `json:"model"` // Model name
|
|
Messages []Message `json:"messages"` // Conversation message list
|
|
Stream bool `json:"stream,omitempty"` // Whether to stream response
|
|
|
|
// Optional parameters (for fine-grained control)
|
|
Temperature *float64 `json:"temperature,omitempty"` // Temperature (0-2), controls randomness
|
|
MaxTokens *int `json:"max_tokens,omitempty"` // Maximum token count
|
|
TopP *float64 `json:"top_p,omitempty"` // Nucleus sampling parameter (0-1)
|
|
FrequencyPenalty *float64 `json:"frequency_penalty,omitempty"` // Frequency penalty (-2 to 2)
|
|
PresencePenalty *float64 `json:"presence_penalty,omitempty"` // Presence penalty (-2 to 2)
|
|
Stop []string `json:"stop,omitempty"` // Stop sequences
|
|
|
|
// Advanced features
|
|
Tools []Tool `json:"tools,omitempty"` // Available tools list
|
|
ToolChoice string `json:"tool_choice,omitempty"` // Tool choice strategy ("auto", "none", {"type": "function", "function": {"name": "xxx"}})
|
|
}
|
|
|
|
// NewMessage creates a message
|
|
func NewMessage(role, content string) Message {
|
|
return Message{
|
|
Role: role,
|
|
Content: content,
|
|
}
|
|
}
|
|
|
|
// NewSystemMessage creates a system message
|
|
func NewSystemMessage(content string) Message {
|
|
return Message{
|
|
Role: "system",
|
|
Content: content,
|
|
}
|
|
}
|
|
|
|
// NewUserMessage creates a user message
|
|
func NewUserMessage(content string) Message {
|
|
return Message{
|
|
Role: "user",
|
|
Content: content,
|
|
}
|
|
}
|
|
|
|
// NewAssistantMessage creates an assistant message
|
|
func NewAssistantMessage(content string) Message {
|
|
return Message{
|
|
Role: "assistant",
|
|
Content: content,
|
|
}
|
|
}
|