18c9354095
- 注入数据库、运行时配置、统一响应、文件存储和平台 AI 能力,补充业务读写工具与客户快捷操作契约。 - 移除模块内重复的组织、客户、工单、标签、技能、旧工作流、MCP 和迁移实现,将身份权限与业务主体交由宿主管理。 - 使用 libSQL 重构向量存储,并完善图片消息、访客身份、排队调度、企业微信和支持聊天页面。 - 统一 HTTP、DTO 与 WebSocket 的 snake_case 协议,补齐模块初始化、业务动作和公共载荷等回归测试。
57 lines
1.8 KiB
Go
57 lines
1.8 KiB
Go
package contract
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
)
|
|
|
|
const (
|
|
ModelSourcePlatform = "platform"
|
|
ModelSourceCustom = "custom"
|
|
)
|
|
|
|
// PlatformAIConfig is a runtime-only OpenAI-compatible model configuration.
|
|
// Credentials and the signed HTTP client are supplied by the host and are
|
|
// never persisted in Agent Desk tables or returned by dashboard APIs.
|
|
type PlatformAIConfig struct {
|
|
BaseURL string
|
|
APIKey string
|
|
ChatEnabled bool
|
|
ChatModel string
|
|
VisionEnabled bool
|
|
VisionModel string
|
|
EmbeddingEnabled bool
|
|
ModelName string
|
|
EmbeddingModel string
|
|
EmbeddingDimension int
|
|
MaxOutputTokens int
|
|
TimeoutMS int
|
|
MaxRetryCount int
|
|
HTTPClient *http.Client
|
|
}
|
|
|
|
type PlatformAIStatus struct {
|
|
Enabled bool `json:"enabled"`
|
|
Balance float64 `json:"balance"`
|
|
Currency string `json:"currency"`
|
|
DefaultProvider string `json:"default_provider"`
|
|
DefaultModel string `json:"default_model"`
|
|
ChatEnabled bool `json:"chat_enabled"`
|
|
ChatProvider string `json:"chat_provider"`
|
|
ChatModel string `json:"chat_model"`
|
|
VisionEnabled bool `json:"vision_enabled"`
|
|
VisionModel string `json:"vision_model"`
|
|
EmbeddingEnabled bool `json:"embedding_enabled"`
|
|
EmbeddingModel string `json:"embedding_model"`
|
|
EmbeddingDimension int `json:"embedding_dimension"`
|
|
RechargeURL string `json:"recharge_url"`
|
|
}
|
|
|
|
// PlatformAIProvider lets the host resolve the current model source on every
|
|
// request, so changing the system setting takes effect without restarting.
|
|
type PlatformAIProvider interface {
|
|
ModelSource(context.Context) (string, error)
|
|
Config(context.Context) (*PlatformAIConfig, error)
|
|
Status(context.Context) (*PlatformAIStatus, error)
|
|
}
|