Files
aiops/backend/model/llm.go
T
Logan.Li d8b124fc7c feat: 更新主流大模型供应商目录
- 按云服务、Coding Plan、API 网关和本地模型分组

- 新增兼容模型发现与供应商协议校验
2026-07-30 21:34:33 +08:00

71 lines
3.9 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package model
import "time"
// LLMConfig 大语言模型配置(单行配置,类似 LDAPConfig) // Logan.Li
// 支持 OpenAI 兼容接口(OpenAI / DeepSeek / 智谱GLM / 通义千问 / Moonshot / Kimi / 小米MiMo / Anthropic(需代理) / Ollama / 自定义)
type LLMConfig struct {
ID uint `gorm:"primarykey" json:"id"`
Provider string `gorm:"size:50;not null;default:openai" json:"provider"` // deepseek/glm/glm-coding/kimi/moonshot/minimax/minimax-coding/mimo/siliconflow/openai/anthropic/ollama/vllm/custom
Model string `gorm:"size:100;not null;default:gpt-4o-mini" json:"model"` // 模型名,如 gpt-4o-mini / deepseek-v4-flash
APIKey string `gorm:"size:500" json:"api_key"` // API Key(GET 时会被脱敏)
Endpoint string `gorm:"size:500" json:"endpoint"` // 基础地址,如 https://api.openai.com/v1
Temperature float64 `gorm:"default:0.7" json:"temperature"` // 采样温度 0-2
MaxTokens int `gorm:"default:2000" json:"max_tokens"` // 最大输出 token
SystemPrompt string `gorm:"type:text" json:"system_prompt"` // 系统提示词(AIOps 运维助手角色)
Enabled bool `gorm:"default:false" json:"enabled"` // 是否启用
ReasoningEnabled bool `gorm:"default:false" json:"reasoning_enabled"` // 是否启用推理/Plan 模式(OpenAI o-series / DeepSeek R1 / Claude thinking 等) // Logan.Li
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// TableName 表名 // Logan.Li
func (LLMConfig) TableName() string { return "ai_llm_configs" }
// SaveLLMConfigRequest 保存 LLM 配置请求 // Logan.Li
type SaveLLMConfigRequest struct {
Provider string `json:"provider"`
Model string `json:"model"`
APIKey string `json:"api_key"` // 若为脱敏值(含 ****)则后端保留原值
Endpoint string `json:"endpoint"`
Temperature float64 `json:"temperature"`
MaxTokens int `json:"max_tokens"`
SystemPrompt string `json:"system_prompt"`
Enabled bool `json:"enabled"`
ReasoningEnabled bool `json:"reasoning_enabled"` // 是否启用推理/Plan 模式
}
// ChatMessage 对话消息 // Logan.Li
type ChatMessage struct {
Role string `json:"role"` // system / user / assistant
Content string `json:"content"`
}
// ChatRequest AI 对话请求 // Logan.Li
type ChatRequest struct {
Messages []ChatMessage `json:"messages" binding:"required,min=1,dive"`
SessionID string `json:"session_id"` // 前端生成,用于隔离多轮对话
}
// ChatResponse AI 对话响应 // Logan.Li
type ChatResponse struct {
Content string `json:"content"`
Model string `json:"model"`
TokensUsed int `json:"tokens_used"`
}
// ChatHistory 对话历史记录(按用户隔离,session_id 区分多轮对话) // Logan.Li
// 仅持久化成功完成的对话(用户消息 + 助手回复成对写入),错误气泡为瞬时 UI 不入库
type ChatHistory struct {
ID uint `gorm:"primarykey" json:"id"`
UserID uint `gorm:"index;not null" json:"user_id"` // 所属用户(JWT 中间件注入)
SessionID string `gorm:"size:64;index;not null;default:''" json:"session_id"` // 对话会话 ID(前端 UUID)
Role string `gorm:"size:16;not null" json:"role"` // user / assistant
Content string `gorm:"type:text;not null" json:"content"` // 消息内容
Model string `gorm:"size:100" json:"model"` // 生成回复所用模型(仅 assistant 行有意义)
CreatedAt time.Time `json:"created_at"`
}
// TableName 表名 // Logan.Li
func (ChatHistory) TableName() string { return "ai_chat_histories" }