initial commit
This commit is contained in:
51
internal/domain/llm.go
Normal file
51
internal/domain/llm.go
Normal file
@@ -0,0 +1,51 @@
|
||||
package domain
|
||||
|
||||
import "context"
|
||||
|
||||
// Message represents a single message in the conversation
|
||||
type Message struct {
|
||||
Role string `json:"role"` // "system", "user", "assistant", "tool"
|
||||
Content string `json:"content"` // Message content
|
||||
ToolCallID string `json:"tool_call_id,omitempty"` // For tool responses
|
||||
ToolCalls []ToolCall `json:"tool_calls,omitempty"` // For assistant messages with function calls
|
||||
}
|
||||
|
||||
// ToolCall represents a function call request from the LLM
|
||||
type ToolCall struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"` // "function"
|
||||
Function struct {
|
||||
Name string `json:"name"`
|
||||
Arguments string `json:"arguments"` // JSON string
|
||||
} `json:"function"`
|
||||
}
|
||||
|
||||
// Tool represents a function available to the LLM
|
||||
type Tool struct {
|
||||
Type string `json:"type"` // "function"
|
||||
Function ToolFunction `json:"function"`
|
||||
}
|
||||
|
||||
// ToolFunction defines a function that can be called
|
||||
type ToolFunction struct {
|
||||
Name string `json:"name"`
|
||||
Description string `json:"description"`
|
||||
Parameters map[string]interface{} `json:"parameters"`
|
||||
}
|
||||
|
||||
// LLMRequest represents a request to the LLM with conversation history
|
||||
type LLMRequest struct {
|
||||
Messages []Message `json:"messages"`
|
||||
Tools []Tool `json:"tools,omitempty"`
|
||||
}
|
||||
|
||||
// LLMResponse represents the response from the LLM
|
||||
type LLMResponse struct {
|
||||
Content string `json:"content"`
|
||||
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
|
||||
}
|
||||
|
||||
// LLMProvider defines the interface for LLM providers
|
||||
type LLMProvider interface {
|
||||
Complete(ctx context.Context, request LLMRequest) (*LLMResponse, error)
|
||||
}
|
||||
Reference in New Issue
Block a user