package agent import ( "context" "fmt" "log" "os" "github.com/tmc/langchaingo/llms" "github.com/tmc/langchaingo/prompts" "github.com/tmc/langchaingo/outputparser" ) func Call(llm llms.Model, ctx context.Context) (response string) { response, err := llms.GenerateFromSinglePrompt( ctx, llm, "Hello! My name is wonder!", ) if err != nil { log.Fatal(err) } fmt.Println("AI:", response) return response } func CallWithMessage(llm llms.Model, ctx context.Context, prompt string) (response string) { response, err := llms.GenerateFromSinglePrompt( ctx, llm, "用户正在学习Go语言,你是用户的助手。\n"+prompt, ) if err != nil { log.Fatal(err) } fmt.Println("AI:", response) return response } func CallWithAgent(llm llms.Model, ctx context.Context, topic string, promptPath string,) (response string) { content, err := os.ReadFile(promptPath) if err != nil { fmt.Printf("File err: %v", err) return } text := string(content) template := prompts.NewPromptTemplate(text, []string{".Knowledge"}) prompt, err := template.Format(map[string]any{ "Knowledge": topic, }) fmt.Println("Me: ", prompt) if err != nil { fmt.Printf("Prompt err: %v", err) } response = CallWithMessage(llm, ctx, prompt) return response } func CallWithAgentDefined[T any](llm llms.Model, ctx context.Context, topic string, promptPath string, responseType T) (response T) { parse, err := outputparser.NewDefined(responseType) if err != nil { fmt.Printf("CreateParse err: %v", err) return } content, err := os.ReadFile(promptPath) if err != nil { fmt.Printf("File err: %v", err) return } text := string(content) textWithFormatInstruction := text + "\n" + parse.GetFormatInstructions() template := prompts.NewPromptTemplate(textWithFormatInstruction, []string{".Knowledge"}) prompt, err := template.Format(map[string]any{ "Knowledge": topic, }) fmt.Println("Me: ", prompt) if err != nil { fmt.Printf("Prompt err: %v", err) } responseString, err := llms.GenerateFromSinglePrompt( ctx, llm, "用户正在学习Go语言,你是用户的助手。\n"+prompt, ) if err != nil { log.Fatal(err) } response, err = parse.Parse(responseString) if err != nil { fmt.Printf("Parse err: %v", err) return } return response }