第一个聊天ai
This commit is contained in:
54
chat/chat.go
Normal file
54
chat/chat.go
Normal 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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user