package engine // backend.go - EngineBackend 接口定义. // // 升华改进(ELEVATED): 原设计在主循环中散落 Provider==nil 判断 // (创建 api.Client / 构建 api.MessageRequest / 调用 CreateMessageStream). // 现在通过 EngineBackend 接口将两个路径封装: // - anthropicBackend:直连 Anthropic API(走 api.Client) // - providerBackend:通过 flyto.ModelProvider 接口 // // 主循环只调 backend.BuildAndStream(),不再感知双路径差异. import ( "context" agentctx "git.flytoex.net/yuanwei/flyto-agent/pkg/context" "git.flytoex.net/yuanwei/flyto-agent/pkg/flyto" "git.flytoex.net/yuanwei/flyto-agent/pkg/query" ) // EngineBackend 封装"构建请求 + 流式调用"两个操作. // // 主循环只调此接口,不判断 Provider==nil. type EngineBackend interface { // BuildAndStream 构建请求并发起流式调用. // attempt 用于可观测性(记录在重试日志中). BuildAndStream(ctx context.Context, model string, maxTokens int, promptBlocks []agentctx.SystemPromptBlock, messages []query.Message, toolDefs any, responseFormat *flyto.ResponseFormat, attempt int) (<-chan flyto.Event, error) }