diff --git a/components/retriever/router/main.go b/components/retriever/router/main.go index 72b30fb..2bef9dd 100644 --- a/components/retriever/router/main.go +++ b/components/retriever/router/main.go @@ -23,7 +23,6 @@ import ( "github.com/cloudwego/eino-ext/components/retriever/volc_vikingdb" "github.com/cloudwego/eino/components/retriever" - "github.com/cloudwego/eino/flow/retriever/multiquery" "github.com/cloudwego/eino/flow/retriever/router" "github.com/cloudwego/eino-examples/internal/logs" @@ -43,7 +42,7 @@ func main() { return } - // rewrite query by llm + // route retriever by custom router mqr, err := router.NewRetriever(ctx, &router.Config{ Retrievers: map[string]retriever.Retriever{ "1": vk, @@ -76,29 +75,7 @@ func main() { return } - logs.Errorf("Multi-Query Retrieve success, docs=%v", resp) - - // rewrite query by custom method - mqr, err = multiquery.NewRetriever(ctx, &multiquery.Config{ - RewriteHandler: func(ctx context.Context, query string) ([]string, error) { - return strings.Split(query, "\n"), nil - }, - MaxQueriesNum: 3, - OrigRetriever: vk, - FusionFunc: nil, // use default fusion, just deduplicate by doc id - }) - if err != nil { - logs.Errorf("NewMultiQueryRetriever failed, err=%v", err) - return - } - - resp, err = mqr.Retrieve(ctx, "tourist attraction") - if err != nil { - logs.Errorf("Multi-Query Retrieve failed, err=%v", err) - return - } - - logs.Infof("Multi-Query Retrieve success, docs=%v", resp) + logs.Infof("Router Retrieve success, docs=%v", resp) } func newVikingDBRetriever(ctx context.Context, host, region, ak, sk string) (retriever.Retriever, error) { diff --git a/quickstart/chat/main.go b/quickstart/chat/main.go index 58e5683..e5ce339 100644 --- a/quickstart/chat/main.go +++ b/quickstart/chat/main.go @@ -30,7 +30,6 @@ import ( func main() { openAIAPIKey := os.Getenv("OPENAI_API_KEY") - openAIModelName := os.Getenv("OPENAI_MODEL_NAME") ctx := context.Background() @@ -71,9 +70,8 @@ func main() { // 创建 OpenAI ChatModel, 假设使用 openai 官方服务。 chatModel, err := openai.NewChatModel(ctx, &openai.ChatModelConfig{ - Model: openAIModelName, // 使用的模型版本 - APIKey: openAIAPIKey, // OpenAI API 密钥 - + Model: "gpt-4o", // 使用的模型版本 + APIKey: openAIAPIKey, // OpenAI API 密钥 }) if err != nil { logs.Errorf("NewChatModel failed, err=%v", err) diff --git a/quickstart/todoagent/main.go b/quickstart/todoagent/main.go index cadabef..f7305a9 100644 --- a/quickstart/todoagent/main.go +++ b/quickstart/todoagent/main.go @@ -27,6 +27,7 @@ import ( "github.com/cloudwego/eino/compose" "github.com/cloudwego/eino/schema" + "github.com/cloudwego/eino-examples/internal/gptr" "github.com/cloudwego/eino-examples/internal/logs" ) @@ -57,11 +58,10 @@ func main() { } // 创建并配置 ChatModel - temp := float32(0.7) chatModel, err := openai.NewChatModel(context.Background(), &openai.ChatModelConfig{ Model: "gpt-4o", APIKey: openAIAPIKey, - Temperature: &temp, + Temperature: gptr.Of(float32(0.7)), }) if err != nil { logs.Errorf("NewChatModel failed, err=%v", err) @@ -70,8 +70,9 @@ func main() { // 获取工具信息, 用于绑定到 ChatModel toolInfos := make([]*schema.ToolInfo, 0, len(todoTools)) - for _, tool := range todoTools { - info, err := tool.Info(ctx) + var info *schema.ToolInfo + for _, todoTool := range todoTools { + info, err = todoTool.Info(ctx) if err != nil { logs.Infof("get ToolInfo failed, err=%v", err) return @@ -158,7 +159,7 @@ func getAddTodoTool() tool.InvokableTool { // 自行实现 InvokableTool 接口 type ListTodoTool struct{} -func (lt *ListTodoTool) Info(ctx context.Context) (*schema.ToolInfo, error) { +func (lt *ListTodoTool) Info(_ context.Context) (*schema.ToolInfo, error) { return &schema.ToolInfo{ Name: "list_todo", Desc: "List all todo items", @@ -172,10 +173,6 @@ func (lt *ListTodoTool) Info(ctx context.Context) (*schema.ToolInfo, error) { }, nil } -type TodoListParams struct { - Finished *bool `json:"finished"` -} - type TodoUpdateParams struct { ID string `json:"id" jsonschema:"description=id of the todo"` Content *string `json:"content,omitempty" jsonschema:"description=content of the todo"` @@ -185,25 +182,34 @@ type TodoUpdateParams struct { } type TodoAddParams struct { - Content string `json:"content"` - StartedAt *int64 `json:"started_at,omitempty"` // 开始时间 - Deadline *int64 `json:"deadline,omitempty"` + Content string `json:"content"` + StartAt *int64 `json:"started_at,omitempty"` // 开始时间 + Deadline *int64 `json:"deadline,omitempty"` } -func (lt *ListTodoTool) InvokableRun(ctx context.Context, argumentsInJSON string, opts ...tool.Option) (string, error) { +func (lt *ListTodoTool) InvokableRun(_ context.Context, argumentsInJSON string, _ ...tool.Option) (string, error) { logs.Infof("invoke tool list_todo: %s", argumentsInJSON) - // 具体的调用逻辑 + + // Tool处理代码 + // ... + return `{"todos": [{"id": "1", "content": "在2024年12月10日之前完成Eino项目演示文稿的准备工作", "started_at": 1717401600, "deadline": 1717488000, "done": false}]}`, nil } -func AddTodoFunc(ctx context.Context, params *TodoAddParams) (string, error) { +func AddTodoFunc(_ context.Context, params *TodoAddParams) (string, error) { logs.Infof("invoke tool add_todo: %+v", params) - // 具体的调用逻辑 + + // Tool处理代码 + // ... + return `{"msg": "add todo success"}`, nil } -func UpdateTodoFunc(ctx context.Context, params *TodoUpdateParams) (string, error) { +func UpdateTodoFunc(_ context.Context, params *TodoUpdateParams) (string, error) { logs.Infof("invoke tool update_todo: %+v", params) - // 具体的调用逻辑 + + // Tool处理代码 + // ... + return `{"msg": "update todo success"}`, nil }