- 新增 OpenAIProvider / ClaudeProvider,接入 Deepseek 真实 API - 修复 Deepseek thinking 模式 reasoning_content 回传问题 - 修复 Thinking 阶段过渡指令每轮重复插入导致的死循环 - 新增 maxTurns 保护、dumpMessages/dumpTools 调试输出
50 lines
2.0 KiB
Go
50 lines
2.0 KiB
Go
package schema
|
|
|
|
import "encoding/json"
|
|
|
|
// Role 定义消息的角色,这是与大模型沟通的基石
|
|
type Role string
|
|
|
|
const (
|
|
RoleSystem Role = "system" // 系统提示词:确立 Agent 的性格与红线
|
|
RoleUser Role = "user" // 用户输入 / 工具执行的返回结果 (Observation)
|
|
RoleAssistant Role = "assistant" // 模型的输出:包含推理(Reasoning)或工具调用(ToolCall)
|
|
)
|
|
|
|
// Message 代表上下文中传递的单条消息
|
|
type Message struct {
|
|
Role Role `json:"role"`
|
|
Content string `json:"content"` // 存放纯文本内容
|
|
|
|
// ReasoningContent Deepseek thinking 模式的内部推理链,回传时必须保留
|
|
ReasoningContent string `json:"reasoning_content,omitempty"`
|
|
|
|
// 如果模型决定调用工具,此字段将被填充 (支持并行调用多个工具)
|
|
ToolCalls []ToolCall `json:"tool_calls,omitempty"`
|
|
|
|
// 如果这是对某个工具调用的响应,此字段必须填写,以告知模型上下文的关联性
|
|
ToolCallID string `json:"tool_call_id,omitempty"`
|
|
}
|
|
|
|
// ToolCall 代表模型请求调用某个具体的工具
|
|
type ToolCall struct {
|
|
ID string `json:"id"` // 工具调用的唯一 ID
|
|
Name string `json:"name"` // 想要调用的工具名称 (例如 "bash")
|
|
// Arguments 存放 JSON 参数。使用 RawMessage 是为了延迟解析,将解析责任交给具体的工具
|
|
Arguments json.RawMessage `json:"arguments"`
|
|
}
|
|
|
|
// ToolResult 代表工具在本地执行完毕后返回的物理结果
|
|
type ToolResult struct {
|
|
ToolCallID string `json:"tool_call_id"`
|
|
Output string `json:"output"` // 工具执行的控制台输出或报错堆栈
|
|
IsError bool `json:"is_error"` // 标记是否失败,供后续的驾驭工程进行错误自愈
|
|
}
|
|
|
|
// ToolDefinition 描述了一个大模型可以调用的工具元信息 (供模型理解工具有什么用)
|
|
type ToolDefinition struct {
|
|
Name string `json:"name"`
|
|
Description string `json:"description"`
|
|
InputSchema interface{} `json:"input_schema"` // 对应 JSON Schema
|
|
}
|