request

package
v0.3.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2026 License: GPL-3.0 Imports: 29 Imported by: 0

Documentation

Overview

Package request 构建与发送模型请求,管理请求策略与摘要

该包封装与 OpenAI 兼容 API 的请求构造、发送与上下文摘要能力

Index

Constants

View Source
const (
	ChatCompletionsEndpoint = "/chat/completions"
	EmbeddingsEndpoint      = "/embeddings"
)

API endpoints

View Source
const (
	SSEDataPrefix = "data: "
	SSEDoneMarker = "[DONE]"
)

SSE constants

View Source
const SummaryTimeout = 120 * time.Second

SummaryTimeout 获取总结超时时间

View Source
const Timeout = 120 * time.Second

Timeout 请求超时时间

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 根据配置的表达式规则判断一组工具调用是否可以自动执行。 三层决策逻辑:

  1. 拒绝检查:任一工具命中拒绝规则则整体驳回(安全优先)
  2. 审批检查:无规则默认不自动执行(防默许危险操作)
  3. 全量检查:所有工具都必须触发审批规则

配置优先级: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, callback func(structs.ChatCompletionResponse) error) error

SimpleOpenAIRequest 发送 OpenAI ChatCompletion 请求(强制stream=true)

func SubAgentReject

func SubAgentReject(session *storageStructs.Chats) error

SubAgentReject 处理子代理被拒绝时的状态回退

func Summary

func Summary(ctx context.Context, db *gorm.DB, chatID uint32, agentID string) (string, error)

Summary 获取总结

func SummarySession

func SummarySession(ctx context.Context, session *storageStructs.Chats) (string, error)

SummarySession 获取总结

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 评估配置的自动审批/拒绝规则,返回明确决策。 评估顺序(安全优先):

  1. 编译用户+内置合并规则
  2. 先检查拒绝规则——任一匹配即整体拒绝
  3. 无审批规则时返回 DecisionManual
  4. 检查审批规则——所有工具必须全部命中

配置优先级:Agent 级别 > 全局默认 > 内置规则(受 IgnoreDefaultRules 控制) 编译/运行时错误通过第二个返回值传播,不会被静默吞咽。

type ToolCall

type ToolCall struct {
	Name       string          `json:"name"`
	ID         string          `json:"id"`
	Parameters map[string]*any `json:"parameters"`
}

ToolCall 工具调用

func ParseToolsFromJSON

func ParseToolsFromJSON(payload string) ([]ToolCall, error)

ParseToolsFromJSON 解析工具调用 JSON 字符串为 ToolCall 结构体切片。 支持完整 map 和 ObjectSlot(流式解析未完成状态)两种对象形式, 以及完整数组和 ArraySlot 两种容器形式。空 payload 返回空切片而非错误。

func (ToolCall) AsMap

func (t ToolCall) AsMap() map[string]any

AsMap 将 ToolCall 转换为 map[string]any

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 定义请求相关的数据结构

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL