Documentation
¶
Overview ¶
Package request 构建与发送模型请求,管理请求策略与摘要
该包封装与 OpenAI 兼容 API 的请求构造、发送与上下文摘要能力
Index ¶
- Constants
- func ApplyToolOnHooks(session *storageStructs.Chats, toolCallingJSON string) error
- func CanAutoApprove(session *storageStructs.Chats, toolCalls []ToolCall, ...) (bool, string, error)deprecated
- func ExecuteToolCalls(session *storageStructs.Chats, toolCallingJSON string) (bool, error)
- func RejectToolCallsNoDeactivate(session *storageStructs.Chats, reason string, ...) error
- func SendRequest(ctx context.Context, session *storageStructs.Chats, ...) (bool, error)
- func SimpleOpenAIEmbedding(ctx context.Context, baseURL, apiKey, model string, ...) ([][]float32, error)
- func SimpleOpenAIRequest(ctx context.Context, baseURL, apiKey, model string, ...) error
- func SubAgentReject(session *storageStructs.Chats) error
- func Summary(ctx context.Context, db *gorm.DB, chatID uint32, agentID string) (string, error)
- func SummarySession(ctx context.Context, session *storageStructs.Chats) (string, error)
- func TitleSummary(ctx context.Context, db *gorm.DB, chatID uint32) (string, error)
- func TitleSummaryFull(ctx context.Context, db *gorm.DB, chatID uint32) (string, error)
- func UserAddMsg(session *storageStructs.Chats, msg string, ...) error
- type ApprovalDecision
- type ApprovalResult
- type ToolCall
Constants ¶
const ( ChatCompletionsEndpoint = "/chat/completions" EmbeddingsEndpoint = "/embeddings" )
API endpoints
const ( SSEDataPrefix = "data: " SSEDoneMarker = "[DONE]" )
SSE constants
const SummaryTimeout = 120 * time.Second
SummaryTimeout 获取总结超时时间
const Timeout = 120 * time.Second
Timeout 请求超时时间
const TitleTimeout = 30 * time.Second
TitleTimeout 标题生成超时时间
Variables ¶
This section is empty.
Functions ¶
func ApplyToolOnHooks ¶
func ApplyToolOnHooks(session *storageStructs.Chats, toolCallingJSON string) error
ApplyToolOnHooks 应用工具调用,遍历所有已解析的工具调用并执行对应的 OnHook 回调
func CanAutoApprove
deprecated
func CanAutoApprove(session *storageStructs.Chats, toolCalls []ToolCall, msg *storageStructs.Messages) (bool, string, error)
CanAutoApprove 根据配置的表达式规则判断一组工具调用是否可以自动执行。 三层决策逻辑:
- 拒绝检查:任一工具命中拒绝规则则整体驳回(安全优先)
- 审批检查:无规则默认不自动执行(防默许危险操作)
- 全量检查:所有工具都必须触发审批规则
配置优先级:Agent 级别 > 全局默认 > 系统内置规则(IgnoreDefaultRules=false 时启用)
Deprecated: 使用 EvaluateApprovalRules 替代
func ExecuteToolCalls ¶
func ExecuteToolCalls(session *storageStructs.Chats, toolCallingJSON string) (bool, error)
ExecuteToolCalls 执行工具调用并持久化结果。 流程:设置状态为 ToolCalling → 逐工具执行 OnHook → 通过 Solver 解析并保存工具响应 → 恢复 Idle 状态。 任一环节失败都会回滚到 Idle 并返回错误。
func RejectToolCallsNoDeactivate ¶
func RejectToolCallsNoDeactivate(session *storageStructs.Chats, reason string, refers *storageStructs.MessagesReferList) error
RejectToolCallsNoDeactivate 自动拒绝工具调用(不退出 subagent)
func SendRequest ¶
func SendRequest(ctx context.Context, session *storageStructs.Chats, callback func(string, string, uint64, structs.Usage, *string) error) (bool, error)
SendRequest 发送 LLM 请求并处理流式响应。 流程:设置状态 → 构建请求体 → 发送请求 → 流式解析 → 持久化 → 处理工具调用。 token 使用阈值刷写策略(每 256 字符批量写库)平衡实时性与 I/O 性能。 返回的 bool 值表示是否还有后续工具调用需要处理。
func SimpleOpenAIEmbedding ¶
func SimpleOpenAIEmbedding(ctx context.Context, baseURL, apiKey, model string, body structs.EmbeddingRequest) ([][]float32, error)
SimpleOpenAIEmbedding 发送 OpenAI Embedding 请求
func SimpleOpenAIRequest ¶
func SimpleOpenAIRequest(ctx context.Context, baseURL, apiKey, model string, body structs.ChatCompletionRequest, masker *mask.Engine, callback func(structs.ChatCompletionResponse) error) error
SimpleOpenAIRequest 发送 OpenAI ChatCompletion 请求(强制stream=true)。 masker 非 nil 时,出站前对消息做敏感数据脱敏,并在流式响应中还原为原文。
func SubAgentReject ¶
func SubAgentReject(session *storageStructs.Chats) error
SubAgentReject 处理子代理被拒绝时的状态回退
func SummarySession ¶
SummarySession 获取总结
func TitleSummary ¶ added in v0.3.5
TitleSummary 生成会话标题(首次生成:第一条用户请求 + 第一条 AI 响应)。 不写库,由调用方写入 Chats.AITitle;消息不足时返回 ("", nil)。
func TitleSummaryFull ¶ added in v0.3.5
TitleSummaryFull 重生成会话标题(compress 后:完整对话输入)。 不写库,由调用方写入 Chats.AITitle;无有效消息时返回 ("", nil)。
func UserAddMsg ¶
func UserAddMsg(session *storageStructs.Chats, msg string, refers *storageStructs.MessagesReferList) error
UserAddMsg 处理用户发送的消息,更新数据库并处理子代理和审批状态 当 session 处于 WaitApprove 状态时,用户消息会被同时作为拒绝原因(写入 Communicate 消息)和正常用户消息(写入 MessagesRoleUser)处理,确保输入不丢失。
Types ¶
type ApprovalDecision ¶ added in v0.3.0
type ApprovalDecision uint8
ApprovalDecision 审批决策类型,消除旧有 (bool, string) 返回值的三重歧义。
const ( // DecisionManual 表示无任何规则匹配,需用户手动审批 DecisionManual ApprovalDecision = iota // DecisionApproved 表示所有工具调用均命中自动审批规则 DecisionApproved // DecisionRejected 表示至少一个工具调用命中了自动拒绝规则 DecisionRejected )
type ApprovalResult ¶ added in v0.3.0
type ApprovalResult struct {
Decision ApprovalDecision
Reason string
}
ApprovalResult 是 EvaluateApprovalRules 的结构化返回值。 Reason 仅在 Decision == DecisionRejected 时有意义。
func EvaluateApprovalRules ¶ added in v0.3.0
func EvaluateApprovalRules(session *storageStructs.Chats, toolCalls []ToolCall) (ApprovalResult, error)
EvaluateApprovalRules 评估配置的自动审批/拒绝规则,返回明确决策。 评估顺序(安全优先):
- 编译用户+内置合并规则
- 先检查拒绝规则——任一匹配即整体拒绝
- 无审批规则时返回 DecisionManual
- 检查审批规则——所有工具必须全部命中
配置优先级:Agent 级别 > 全局默认 > 内置规则(受 IgnoreDefaultRules 控制) 编译/运行时错误通过第二个返回值传播,不会被静默吞咽。
type ToolCall ¶
type ToolCall struct {
Name string `json:"name"`
ID string `json:"id"`
Parameters map[string]*any `json:"parameters"`
}
ToolCall 工具调用
func ParseToolsFromJSON ¶
ParseToolsFromJSON 解析工具调用 JSON 字符串为 ToolCall 结构体切片。 支持完整 map 和 ObjectSlot(流式解析未完成状态)两种对象形式, 以及完整数组和 ArraySlot 两种容器形式。空 payload 返回空切片而非错误。
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
Package agents 管理请求层中的代理配置与生命周期
|
Package agents 管理请求层中的代理配置与生命周期 |
|
actions
Package actions 提供请求层代理的内部动作处理
|
Package actions 提供请求层代理的内部动作处理 |
|
config
Package agentconfig 代理配置加载与内置代理定义
|
Package agentconfig 代理配置加载与内置代理定义 |
|
Package build 处理模型请求的构建与摘要生成
|
Package build 处理模型请求的构建与摘要生成 |
|
Package structs 定义请求相关的数据结构
|
Package structs 定义请求相关的数据结构 |