/* * Copyright 2025 CloudWeGo Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package einoagent import ( "context" "github.com/cloudwego/eino/compose" "github.com/cloudwego/eino/flow/agent/react" ) func defaultReactAgentConfig(ctx context.Context) (*react.AgentConfig, error) { config := &react.AgentConfig{ MaxStep: 25, ToolReturnDirectly: map[string]struct{}{}} chatModelCfg11, err := defaultArkChatModelConfig(ctx) if err != nil { return nil, err } chatModelIns11, err := NewArkChatModel(ctx, chatModelCfg11) if err != nil { return nil, err } config.Model = chatModelIns11 tools, err := GetTools(ctx) if err != nil { return nil, err } config.ToolsConfig.Tools = tools return config, nil } func NewReactAgent(ctx context.Context, config *react.AgentConfig) (lba *compose.Lambda, err error) { if config == nil { config, err = defaultReactAgentConfig(ctx) if err != nil { return nil, err } } ins, err := react.NewAgent(ctx, config) if err != nil { return nil, err } lba, err = compose.AnyLambda(ins.Generate, ins.Stream, nil, nil) if err != nil { return nil, err } return lba, nil }