68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/tmc/langchaingo/llms"
|
|
"github.com/tmc/langchaingo/llms/openai"
|
|
)
|
|
|
|
func main() {
|
|
apiKey := "sk-angtzujyplaqsrxvlxkmjahpyxwnhhaonnfamokggxclmdlv"
|
|
baseUrl := "https://api.siliconflow.cn/v1"
|
|
|
|
//baseUrl := "https://api.siliconflow.cn/v1/chat/completions"
|
|
model := "Pro/deepseek-ai/DeepSeek-V3.2"
|
|
|
|
if apiKey == "" {
|
|
log.Fatal("apiKey is empty")
|
|
}
|
|
|
|
llm, err := openai.New(
|
|
openai.WithToken(apiKey),
|
|
openai.WithBaseURL(baseUrl),
|
|
)
|
|
|
|
if err != nil {
|
|
log.Fatalf("初始化失败: %v\nAPI Key: %s\nBase URL: %s", err, apiKey, baseUrl)
|
|
}
|
|
|
|
ctx := context.Background()
|
|
reader := bufio.NewReader(os.Stdin)
|
|
|
|
fmt.Println("========= 请输入您的问题 (输入 'exit' 退出) =========")
|
|
for {
|
|
fmt.Print("😇 You: ")
|
|
prompt, err := reader.ReadString('\n')
|
|
if err != nil {
|
|
log.Fatalf("读取输入失败: %v", err)
|
|
}
|
|
|
|
if prompt == "exit\n" {
|
|
fmt.Println("========= 谢谢使用,再见! =========")
|
|
break
|
|
}
|
|
|
|
// Chat
|
|
message := []llms.MessageContent{
|
|
llms.TextParts(llms.ChatMessageTypeHuman, prompt),
|
|
}
|
|
|
|
response, err := llm.GenerateContent(ctx, message,
|
|
llms.WithModel(model),
|
|
)
|
|
|
|
if err != nil {
|
|
log.Fatalf("调用失败: %v\n模型: %s", err, model)
|
|
}
|
|
|
|
fmt.Println("🤖 AI: ", response.Choices[0].Content)
|
|
|
|
}
|
|
|
|
}
|