@@ -2,12 +2,18 @@ package eino
22
33import (
44 "context"
5- "log "
5+ "fmt "
66
77 "github.com/cloudwego/eino/components/prompt"
88 "github.com/cloudwego/eino/schema"
99)
1010
11+ const (
12+ limit = 1000
13+ role = "You are a MySQL expert."
14+ )
15+
16+ // createTemplate 创建并返回一个配置好的聊天模板
1117func createTemplate () prompt.ChatTemplate {
1218 // 创建模板,使用 FString 格式
1319 return prompt .FromMessages (schema .FString ,
@@ -33,18 +39,48 @@ func createTemplate() prompt.ChatTemplate {
3339 )
3440}
3541
36- func createMessagesFromTemplate (ddl , question string ) []* schema.Message {
42+ // formatMessages 格式化消息并处理错误
43+ func formatMessages (template prompt.ChatTemplate , data map [string ]any ) ([]* schema.Message , error ) {
44+ messages , err := template .Format (context .Background (), data )
45+ if err != nil {
46+ return nil , fmt .Errorf ("格式化模板失败: %w" , err )
47+ }
48+ return messages , nil
49+ }
50+
51+ // ddl2sqlMessages 将DDL和问题转换为消息列表
52+ func ddl2sqlMessages (ddl , question string ) ([]* schema.Message , error ) {
3753 template := createTemplate ()
38- // 使用模板生成消息
39- messages , err := template .Format (context .Background (), map [string ]any {
40- "role" : "You are a MySQL expert." ,
54+ data := map [string ]any {
55+ "role" : role ,
4156 "question" : question ,
4257 "ddl" : ddl ,
43- "limit" : 10 ,
58+ "limit" : limit ,
4459 "chat_history" : []* schema.Message {},
45- })
60+ }
61+ messages , err := formatMessages (template , data )
62+ if err != nil {
63+ return nil , err
64+ }
65+ return messages , nil
66+ }
67+
68+ // choiceSqlMessages 生成SQL选择消息列表
69+ func choiceSqlMessages (sqls , ddl , question string ) ([]* schema.Message , error ) {
70+ template := createTemplate ()
71+ data := map [string ]any {
72+ "role" : role ,
73+ "question" : "Select the most suitable SQL output from the above SQL statements" ,
74+ "ddl" : ddl ,
75+ "limit" : limit ,
76+ "chat_history" : []* schema.Message {
77+ schema .UserMessage (question ),
78+ schema .AssistantMessage (sqls , nil ),
79+ },
80+ }
81+ messages , err := formatMessages (template , data )
4682 if err != nil {
47- log . Fatalf ( "format template failed: %v \n " , err )
83+ return nil , err
4884 }
49- return messages
85+ return messages , nil
5086}
0 commit comments