第一个聊天ai

This commit is contained in:
lirui
2026-01-11 20:18:40 +08:00
commit 23ad2909e5
10 changed files with 393 additions and 0 deletions

54
chat/chat.go Normal file
View File

@@ -0,0 +1,54 @@
package chat
import (
"context"
"fmt"
"github.com/cloudwego/eino-ext/components/model/openai"
"github.com/cloudwego/eino/schema"
)
func Chat(chatModel *openai.ChatModel, ctx context.Context, question string) {
role := "心理咨询师"
style := "温柔可爱"
history := []*schema.Message{}
messages, err := GenerateChatMessage(role, style, question, history)
if err != nil {
panic(err)
}
response, err := chatModel.Generate(ctx, messages)
if err != nil {
panic(err)
}
// 获取 Token 使用情况
if usage := response.ResponseMeta.Usage; usage != nil {
println("提示 Tokens:", usage.PromptTokens)
println("生成 Tokens:", usage.CompletionTokens)
println("总 Tokens:", usage.TotalTokens)
}
fmt.Println(response)
}
func ChatStream(chatModel *openai.ChatModel, ctx context.Context, question string) {
role := "心理咨询师"
style := "温柔可爱"
history := []*schema.Message{}
messages, err := GenerateChatMessage(role, style, question, history)
if err != nil {
panic(err)
}
// 获取流式回复
reader, err := chatModel.Stream(ctx, messages)
if err != nil {
panic(err)
}
defer reader.Close() // 注意要关闭
// 处理流式内容
for {
chunk, err := reader.Recv()
if err != nil {
break
}
print(chunk.Content)
}
}