aireact

package
v1.4.4-alpha1202-diff-... Latest Latest
Warning

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

Go to latest
Published: Dec 2, 2025 License: AGPL-3.0 Imports: 40 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SYNC_TYPE_QUEUE_INFO                = "queue_info"
	SYNC_TYPE_TIMELINE                  = "timeline"
	SYNC_TYPE_KNOWLEDGE                 = "enhance_knowledge"
	SYNC_TYPE_UPDATE_CONFIG             = "update_config"
	SYNC_TYPE_MEMORY_CONTEXT            = "memory_sync"
	SYNC_TYPE_REACT_CANCEL_CURRENT_TASK = "react_cancel_current_task"
	SYNC_TYPE_REACT_JUMP_QUEUE          = "react_jump_queue"
	SYNC_TYPE_REACT_CANCEL_TASK         = "react_cancel_task"
	SYNC_TYPE_REACT_REMOVE_TASK         = "react_remove_task"
	SYNC_TYPE_REACT_CLEAR_TASK          = "react_clear_task"
)

同步类型常量

View Source
const SKIP_AI_REVIEW = "skip_ai_review"

Variables

View Source
var (
	REACT_TASK_cancelled = "react_task_cancelled"
	REACT_TASK_enqueue   = "react_task_enqueue"
	REACT_TASK_dequeue   = "react_task_dequeue"
	REACT_TASK_clear     = "react_task_cleared"
)

Functions

func BuildReActInvoker

func BuildReActInvoker(ctx context.Context, options ...aicommon.ConfigOption) (aicommon.AITaskInvokeRuntime, error)

func TaskDuplicateFilter

func TaskDuplicateFilter() taskEnqueueHook

TaskDuplicateFilter 创建一个过滤重复任务的Hook 基于任务ID进行去重

func TaskLogger

func TaskLogger() taskEnqueueHook

TaskLogger 创建一个记录任务信息的Hook

func TaskPriorityFilter

func TaskPriorityFilter(allowedIds []string) taskEnqueueHook

TaskPriorityFilter 创建一个基于任务优先级的Hook 可以根据任务属性设置优先级规则

func WithBuiltinTools

func WithBuiltinTools() aicommon.ConfigOption

Types

type AIBlueprintForgeParamsPromptData

type AIBlueprintForgeParamsPromptData struct {
	BlueprintName        string
	BlueprintDescription string
	BlueprintSchema      string
	OriginalQuery        string
	CumulativeSummary    string
	CurrentIteration     int
	MaxIterations        int
	Timeline             string
	DynamicContext       string
	OldParams            string
	ExtraPrompt          string
	Nonce                string
}

AIBlueprintForgeParamsPromptData contains data for AI blueprint forge parameter generation prompt

type AIForgeReviewSuggestion

type AIForgeReviewSuggestion struct {
	Value            string `json:"value"`
	Prompt           string `json:"prompt"`
	PromptEnglish    string `json:"prompt_english"`
	AllowExtraPrompt bool   `json:"allow_extra_prompt"`
}

type AIReviewPromptData

type AIReviewPromptData struct {
	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	ConversationMemory string
	Timeline           string
	Nonce              string
	UserQuery          string
	Title              string
	Details            string
	Language           string
}

AIReviewPromptData contains data for AI tool call review prompt

type ActionType

type ActionType string

ActionType represents the type of action to take

const (
	ActionDirectlyAnswer          ActionType = schema.AI_REACT_LOOP_ACTION_DIRECTLY_ANSWER
	ActionRequireTool             ActionType = schema.AI_REACT_LOOP_ACTION_REQUIRE_TOOL
	ActionRequireAIBlueprintForge ActionType = schema.AI_REACT_LOOP_ACTION_REQUIRE_AI_BLUEPRINT
	ActionRequestPlanExecution    ActionType = schema.AI_REACT_LOOP_ACTION_REQUEST_PLAN_EXECUTION
	ActionAskForClarification     ActionType = schema.AI_REACT_LOOP_ACTION_ASK_FOR_CLARIFICATION
	ActionKnowledgeEnhanceAnswer  ActionType = schema.AI_REACT_LOOP_ACTION_KNOWLEDGE_ENHANCE
	ActionWriteYaklangCode        ActionType = "write_yaklang_code"
)

type ChangeAIBlueprintPromptData

type ChangeAIBlueprintPromptData struct {
	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	ConversationMemory string
	Timeline           string
	Nonce              string
	UserQuery          string
	CurrentBlueprint   *schema.AIForge
	ForgeList          string
	OldParams          string
	ExtraPrompt        string
	Language           string
	DynamicContext     string
}

ChangeAIBlueprintPromptData contains data for changing AI blueprint prompt template

type DirectlyAnswerPromptData

type DirectlyAnswerPromptData struct {
	AllowPlan          bool
	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	Tools              []*aitool.Tool
	ToolsCount         int
	TopTools           []*aitool.Tool
	TopToolsCount      int
	HasMoreTools       bool
	ConversationMemory string
	Timeline           string
	UserQuery          string
	Nonce              string
	Language           string
	Schema             string
	DynamicContext     string
}

DirectlyAnswerPromptData contains data for directly answer prompt template

type InteractOption

type InteractOption struct {
	Value  string
	Prompt string
}

type LoopPromptData

type LoopPromptData struct {
	AllowAskForClarification       bool
	AllowPlan                      bool
	AllowKnowledgeEnhanceAnswer    bool
	AllowWriteYaklangCode          bool
	AskForClarificationCurrentTime int64
	AskForClarificationMaxTimes    int64

	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	AIForgeList        string
	Tools              []*aitool.Tool
	ToolsCount         int
	TopTools           []*aitool.Tool
	TopToolsCount      int
	HasMoreTools       bool
	ConversationMemory string
	Timeline           string
	UserQuery          string
	Nonce              string
	Language           string
	Schema             string
	DynamicContext     string
}

LoopPromptData contains data for the main loop prompt template

type PromptManager

type PromptManager struct {
	// contains filtered or unexported fields
}

PromptManager manages ReAct prompt templates

func NewPromptManager

func NewPromptManager(react *ReAct, workdir string) *PromptManager

NewPromptManager creates a new prompt manager

func (*PromptManager) DynamicContext

func (pm *PromptManager) DynamicContext() string

func (*PromptManager) GenerateAIBlueprintForgeParamsPrompt

func (pm *PromptManager) GenerateAIBlueprintForgeParamsPrompt(ins *schema.AIForge, blueprintSchema string) (string, error)

GenerateAIBlueprintForgeParamsPrompt generates AI blueprint forge parameter generation prompt using template

func (*PromptManager) GenerateAIBlueprintForgeParamsPromptEx

func (pm *PromptManager) GenerateAIBlueprintForgeParamsPromptEx(
	ins *schema.AIForge,
	blueprintSchema string,
	oldParams aitool.InvokeParams,
	extraPrompt string,
) (string, error)

func (*PromptManager) GenerateAIReviewPrompt

func (pm *PromptManager) GenerateAIReviewPrompt(userQuery, toolOrTitle, params string) (string, error)

GenerateAIReviewPrompt generates AI tool call review prompt using template

func (*PromptManager) GenerateChangeAIBlueprintPrompt

func (pm *PromptManager) GenerateChangeAIBlueprintPrompt(
	ins *schema.AIForge,
	forgeList string,
	oldParams aitool.InvokeParams,
	extraPrompt string,
) (string, error)

func (*PromptManager) GenerateDirectlyAnswerPrompt

func (pm *PromptManager) GenerateDirectlyAnswerPrompt(userQuery string, tools []*aitool.Tool) (string, string, error)

GenerateDirectlyAnswerPrompt generates directly answer prompt using template

func (*PromptManager) GenerateReGenerateToolParamsPrompt

func (pm *PromptManager) GenerateReGenerateToolParamsPrompt(userQuery string, oldParams aitool.InvokeParams, oldTool *aitool.Tool) (string, error)

GenerateReGenerateToolParamsPrompt generates tool parameter regeneration prompt using template

func (*PromptManager) GenerateToolParamsPrompt

func (pm *PromptManager) GenerateToolParamsPrompt(tool *aitool.Tool) (string, error)

GenerateToolParamsPrompt generates tool parameter generation prompt using template

func (*PromptManager) GenerateToolReSelectPrompt

func (pm *PromptManager) GenerateToolReSelectPrompt(noUserInteract bool, oldTool *aitool.Tool, toolList []*aitool.Tool) (string, error)

GenerateToolReSelectPrompt generates tool reselection prompt using template

func (*PromptManager) GenerateVerificationPrompt

func (pm *PromptManager) GenerateVerificationPrompt(originalQuery string, isToolResult bool, payload string, enhanceData ...string) (string, error)

GenerateVerificationPrompt generates verification prompt using template

func (*PromptManager) GetAvailableAIForgeBlueprints

func (pm *PromptManager) GetAvailableAIForgeBlueprints() string

func (*PromptManager) GetBasicPromptInfo

func (pm *PromptManager) GetBasicPromptInfo(tools []*aitool.Tool) (string, map[string]any, error)

func (*PromptManager) GetGlanceWorkdir

func (pm *PromptManager) GetGlanceWorkdir(wd string) string

type ReAct

type ReAct struct {
	*aicommon.Emitter

	// All Runtime Tasks
	RuntimeTasks           []aicommon.AIStatefulTask
	UpdateRuntimeTaskMutex sync.Mutex
	// contains filtered or unexported fields
}

func NewReAct

func NewReAct(opts ...aicommon.ConfigOption) (*ReAct, error)

func NewTestReAct

func NewTestReAct(opts ...aicommon.ConfigOption) (*ReAct, error)

func (*ReAct) AddToTimeline

func (r *ReAct) AddToTimeline(entryType, content string)

AddToTimeline 添加条目到时间线

func (*ReAct) AskForClarification

func (r *ReAct) AskForClarification(ctx context.Context, question string, payloads []string) string

func (*ReAct) AsyncPlanAndExecute

func (r *ReAct) AsyncPlanAndExecute(ctx context.Context, planPayload string, onFinished func(error))

func (*ReAct) CallMirrorOfAIInputEvent

func (r *ReAct) CallMirrorOfAIInputEvent(event *ypb.AIInputEvent)

func (*ReAct) DirectlyAnswer

func (r *ReAct) DirectlyAnswer(ctx context.Context, query string, tools []*aitool.Tool) (string, error)

func (*ReAct) DumpCurrentEnhanceData

func (r *ReAct) DumpCurrentEnhanceData() string

func (*ReAct) DumpTimeline

func (r *ReAct) DumpTimeline() string

func (*ReAct) EmitAction

func (r *ReAct) EmitAction(action string)

EmitAction emits an action event using the embedded Emitter

func (*ReAct) EmitDequeueReActTask

func (r *ReAct) EmitDequeueReActTask(t aicommon.AIStatefulTask, reason string)

func (*ReAct) EmitEnqueueReActTask

func (r *ReAct) EmitEnqueueReActTask(t aicommon.AIStatefulTask)

func (*ReAct) EmitFileArtifactWithExt

func (r *ReAct) EmitFileArtifactWithExt(identifier string, ext string, i any) string

func (*ReAct) EmitIteration

func (r *ReAct) EmitIteration(iteration int, maxIterations int)

EmitIteration emits an iteration start event using the embedded Emitter

func (*ReAct) EmitKnowledge

func (r *ReAct) EmitKnowledge(enhanceID string, knowledge aicommon.EnhanceKnowledge)

EmitKnowledge emits a knowledge event using the embedded Emitter

func (*ReAct) EmitKnowledgeListAboutTask

func (r *ReAct) EmitKnowledgeListAboutTask(taskID string, knowledgeList []aicommon.EnhanceKnowledge, SyncId string)

EmitKnowledgeListAboutTask emits a list of knowledge items related to a specific task using the embedded Emitter, for sync

func (*ReAct) EmitResult

func (r *ReAct) EmitResult(result interface{})

EmitResult emits a final result event using the embedded Emitter

func (*ReAct) EmitResultAfterStream

func (r *ReAct) EmitResultAfterStream(result interface{})

func (*ReAct) EmitTextArtifact

func (r *ReAct) EmitTextArtifact(identifier string, i any)

func (*ReAct) EnhanceKnowledgeAnswer

func (r *ReAct) EnhanceKnowledgeAnswer(ctx context.Context, userQuery string) (string, error)

func (*ReAct) EnhanceKnowledgeGetter

func (r *ReAct) EnhanceKnowledgeGetter(ctx context.Context, userQuery string) (string, error)

func (*ReAct) ExecuteLoopTask

func (r *ReAct) ExecuteLoopTask(taskTypeName string, task aicommon.AIStatefulTask, options ...reactloops.ReActLoopOption) (bool, error)

func (*ReAct) ExecuteToolRequiredAndCall

func (r *ReAct) ExecuteToolRequiredAndCall(ctx context.Context, toolName string) (*aitool.ToolResult, bool, error)

ExecuteToolRequiredAndCall handles tool requirement action using aicommon.ToolCaller. It uses AI to generate tool parameters (require phase) before calling the tool.

func (*ReAct) ExecuteToolRequiredAndCallWithoutRequired

func (r *ReAct) ExecuteToolRequiredAndCallWithoutRequired(ctx context.Context, toolName string, params aitool.InvokeParams) (*aitool.ToolResult, bool, error)

ExecuteToolRequiredAndCallWithoutRequired handles tool execution with provided parameters, skipping the parameter generation (require) phase. It directly calls the tool with the given params. This is useful when parameters are already known and don't need to be generated by AI.

func (*ReAct) GetBasicPromptInfo

func (r *ReAct) GetBasicPromptInfo(tools []*aitool.Tool) (string, map[string]any, error)

func (*ReAct) GetConfig

func (r *ReAct) GetConfig() aicommon.AICallerConfigIf

func (*ReAct) GetCurrentLoop

func (r *ReAct) GetCurrentLoop() *reactloops.ReActLoop

func (*ReAct) GetCurrentPlanExecutionTask

func (r *ReAct) GetCurrentPlanExecutionTask() aicommon.AIStatefulTask

func (*ReAct) GetCurrentTask

func (r *ReAct) GetCurrentTask() aicommon.AIStatefulTask

func (*ReAct) GetLastTask

func (r *ReAct) GetLastTask() aicommon.AIStatefulTask

func (*ReAct) GetQueueInfo

func (r *ReAct) GetQueueInfo() map[string]interface{}

GetQueueInfo 获取任务队列信息

func (*ReAct) HandleSyncTypeCancelTaskEvent

func (r *ReAct) HandleSyncTypeCancelTaskEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeKnowledgeEvent

func (r *ReAct) HandleSyncTypeKnowledgeEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeQueueInfoEvent

func (r *ReAct) HandleSyncTypeQueueInfoEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeReactCancelCurrentTaskEvent

func (r *ReAct) HandleSyncTypeReactCancelCurrentTaskEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeReactClearTaskEvent

func (r *ReAct) HandleSyncTypeReactClearTaskEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeReactJumpQueueEvent

func (r *ReAct) HandleSyncTypeReactJumpQueueEvent(event *ypb.AIInputEvent) error

func (*ReAct) HandleSyncTypeReactRemoveTaskEvent

func (r *ReAct) HandleSyncTypeReactRemoveTaskEvent(event *ypb.AIInputEvent) error

func (*ReAct) InvokeLiteForge

func (r *ReAct) InvokeLiteForge(ctx context.Context, actionName string, prompt string, outputs []aitool.ToolOption, opts ...aicommon.GeneralKVConfigOption) (*aicommon.Action, error)

func (*ReAct) IsFinished

func (r *ReAct) IsFinished() bool

func (*ReAct) IsProcessingReAct

func (r *ReAct) IsProcessingReAct() bool

func (*ReAct) PushCumulativeSummaryHandle

func (r *ReAct) PushCumulativeSummaryHandle(f func() string)

func (*ReAct) RegisterMirrorOfAIInputEvent

func (r *ReAct) RegisterMirrorOfAIInputEvent(id string, f func(*ypb.AIInputEvent))

func (*ReAct) RegisterReActSyncEvent

func (r *ReAct) RegisterReActSyncEvent()

func (*ReAct) RequireAIForgeAndAsyncExecute

func (r *ReAct) RequireAIForgeAndAsyncExecute(
	ctx context.Context, forgeName string,
	onFinished func(error),
)

func (*ReAct) RequireUserInteract

func (r *ReAct) RequireUserInteract(question string, options []string) (string, string, error)

func (*ReAct) RequireUserInteractEx

func (r *ReAct) RequireUserInteractEx(question string, options []*InteractOption) (string, string, error)

func (*ReAct) SaveTimeline

func (r *ReAct) SaveTimeline()

func (*ReAct) SendInputEvent

func (r *ReAct) SendInputEvent(event *ypb.AIInputEvent) (ret error)

SendInputEvent sends an input event to the task queue (non-blocking) This is the only public API for external clients to send input to ReAct

func (*ReAct) SetCurrentPlanExecutionTask

func (r *ReAct) SetCurrentPlanExecutionTask(t aicommon.AIStatefulTask)

func (*ReAct) SetCurrentTask

func (r *ReAct) SetCurrentTask(task aicommon.AIStatefulTask)

func (*ReAct) UnRegisterReActSyncEvent

func (r *ReAct) UnRegisterReActSyncEvent()

func (*ReAct) UnregisterMirrorOfAIInputEvent

func (r *ReAct) UnregisterMirrorOfAIInputEvent(id string)

func (*ReAct) UpdateDebugMode

func (r *ReAct) UpdateDebugMode(debug bool)

UpdateDebugMode dynamically updates the debug mode settings

func (*ReAct) VerifyUserSatisfaction

func (r *ReAct) VerifyUserSatisfaction(ctx context.Context, originalQuery string, isToolCall bool, payload string) (bool, string, error)

VerifyUserSatisfaction verifies if the materials satisfied the user's needs and provides human-readable output

func (*ReAct) Wait

func (r *ReAct) Wait()

type ReGenerateToolParamsPromptData

type ReGenerateToolParamsPromptData struct {
	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	ConversationMemory string
	Timeline           string
	UserQuery          string
	Nonce              string
	OldParams          string
	Schema             string
	DynamicContext     string
}

ReGenerateToolParamsPromptData contains data for tool parameter regeneration prompt template

type ReactTaskItem

type ReactTaskItem struct {
	ID        string                 // 任务唯一标识
	UserInput string                 // 用户输入
	Event     *ypb.AIInputEvent      // 原始输入事件
	Status    string                 // 任务状态: pending, processing, completed, failed
	CreatedAt time.Time              // 创建时间
	StartedAt *time.Time             // 开始处理时间
	EndedAt   *time.Time             // 完成时间
	Metadata  map[string]interface{} // 额外元数据
}

ReactTaskItem 表示ReAct任务队列中的单个任务

type TaskQueue

type TaskQueue struct {
	// contains filtered or unexported fields
}

TaskQueue 任务队列结构

func NewTaskQueue

func NewTaskQueue(name string) *TaskQueue

NewTaskQueue 创建新的任务队列

func (*TaskQueue) AddDequeueHook

func (tq *TaskQueue) AddDequeueHook(hook taskDequeueHook)

AddDequeueHook 添加出队钩子

func (*TaskQueue) AddEnqueueHook

func (tq *TaskQueue) AddEnqueueHook(hook taskEnqueueHook)

AddEnqueueHook 添加预处理钩子

func (*TaskQueue) Append

func (tq *TaskQueue) Append(task aicommon.AIStatefulTask) error

Append 将任务添加到队列末尾

func (*TaskQueue) Clear

func (tq *TaskQueue) Clear()

Clear 清空队列中的所有任务

func (*TaskQueue) ClearHooks

func (tq *TaskQueue) ClearHooks()

ClearHooks 清除所有预处理钩子

func (*TaskQueue) ClearRemoveFromQueueHooks

func (tq *TaskQueue) ClearRemoveFromQueueHooks()

ClearRemoveFromQueueHooks 清除所有出队钩子

func (*TaskQueue) GetFirst

func (tq *TaskQueue) GetFirst() aicommon.AIStatefulTask

GetFirst 获取并移除队列中的第一个任务

func (*TaskQueue) GetQueueName

func (tq *TaskQueue) GetQueueName() string

GetQueueName 获取队列名称

func (*TaskQueue) GetQueueingCount

func (tq *TaskQueue) GetQueueingCount() int

GetQueueingCount 获取队列中任务的数量

func (*TaskQueue) GetQueueingTasks

func (tq *TaskQueue) GetQueueingTasks() []aicommon.AIStatefulTask

GetQueueingTasks 获取所有排队中的任务(不移除)

func (*TaskQueue) IsEmpty

func (tq *TaskQueue) IsEmpty() bool

IsEmpty 检查队列是否为空

func (*TaskQueue) Len

func (tq *TaskQueue) Len() int

func (*TaskQueue) MoveTaskToFirst

func (tq *TaskQueue) MoveTaskToFirst(taskId string) bool

MoveTaskToFirst 将指定 task_id 的任务移动到队列最前面 如果找到任务则返回 true,否则返回 false

func (*TaskQueue) PeekFirst

func (tq *TaskQueue) PeekFirst() aicommon.AIStatefulTask

PeekFirst 查看队列第一个任务但不移除

func (*TaskQueue) PrependToFirst

func (tq *TaskQueue) PrependToFirst(task aicommon.AIStatefulTask) error

PrependToFirst 将任务插队到队列最前面

func (*TaskQueue) RemoveTask

func (tq *TaskQueue) RemoveTask(taskId string) bool

RemoveTask 从队列中移除指定 task_id 的任务 如果找到并移除任务则返回 true,否则返回 false

type ToolParamsPromptData

type ToolParamsPromptData struct {
	ToolName          string
	ToolDescription   string
	ToolSchema        string
	OriginalQuery     string
	CumulativeSummary string
	CurrentIteration  int
	MaxIterations     int
	Timeline          string
	DynamicContext    string
}

ToolParamsPromptData contains data for tool parameter generation prompt

type ToolReSelectPromptData

type ToolReSelectPromptData struct {
	CurrentTime        string
	OSArch             string
	WorkingDir         string
	WorkingDirGlance   string
	ConversationMemory string
	Timeline           string
	UserQuery          string
	Nonce              string
	OldTool            *aitool.Tool
	ToolList           []*aitool.Tool
	Schema             string
	DynamicContext     string
}

ToolReSelectPromptData contains data for tool reselection prompt template

type VerificationPromptData

type VerificationPromptData struct {
	Nonce          string
	OriginalQuery  string
	IsToolCall     bool
	Payload        string
	Timeline       string
	Language       string
	Schema         string
	DynamicContext string
	EnhanceData    []string
}

VerificationPromptData contains data for verification prompt

type YaklangCodeActionLoopPromptData

type YaklangCodeActionLoopPromptData struct {
	CurrentTime               string
	OSArch                    string
	WorkingDir                string
	WorkingDirGlance          string
	ConversationMemory        string
	Timeline                  string
	Nonce                     string
	UserQuery                 string
	CurrentCode               string
	CurrentCodeWithLineNumber string
	IterationCount            int
	ErrorMessages             string
	Language                  string
	DynamicContext            string
	Schema                    string
	Tools                     []*aitool.Tool
	ToolsCount                int
	TopTools                  []*aitool.Tool
	TopToolsCount             int
	HasMoreTools              bool
}

YaklangCodeActionLoopPromptData contains data for Yaklang code generation action loop prompt

Jump to

Keyboard shortcuts

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