You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.8 KiB
81 lines
1.8 KiB
package gemini_test
|
|
|
|
import (
|
|
"context"
|
|
"yunyan/sys/google/gemini"
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
// 注意:运行前替换为有效的 Gemini API Key
|
|
const (
|
|
kGeminiApiKey = "AQ.Ab8RN6Lohf75LMXBs5j4FmPqKoTFJW0D71rYoSv4w_Xnf8TMEQ" // AIzaSy...
|
|
kGeminiModel = "gemini-2.5-flash"
|
|
)
|
|
|
|
func newTestSys(t *testing.T) gemini.ISys {
|
|
if kGeminiApiKey == "" {
|
|
t.Skip("kGeminiApiKey is empty, skip")
|
|
}
|
|
sys, err := gemini.NewSys(
|
|
gemini.SetApikey(kGeminiApiKey),
|
|
gemini.SetModel(kGeminiModel),
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("NewSys err: %v", err)
|
|
}
|
|
return sys
|
|
}
|
|
|
|
func Test_Chat(t *testing.T) {
|
|
sys := newTestSys(t)
|
|
resp, err := sys.Chat(context.Background(), []gemini.Message{
|
|
{Role: "system", Content: "你是一个简洁的中文助手。"},
|
|
{Role: "user", Content: "用一句话介绍 Go 语言。"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Chat err: %v", err)
|
|
}
|
|
fmt.Printf("resp: %s\n", resp.Content)
|
|
}
|
|
|
|
func Test_ChatStream(t *testing.T) {
|
|
sys := newTestSys(t)
|
|
ch := make(chan *gemini.ChatResponseChoice, 16)
|
|
go func() {
|
|
_ = sys.ChatForSteams(context.Background(), []gemini.Message{
|
|
{Role: "user", Content: "从1数到5,每个数字占一行。"},
|
|
}, ch)
|
|
}()
|
|
for c := range ch {
|
|
fmt.Print(c.Content)
|
|
}
|
|
fmt.Println()
|
|
}
|
|
|
|
func Test_MissingKey(t *testing.T) {
|
|
_, err := gemini.NewSys()
|
|
if err == nil {
|
|
t.Errorf("expect error when apikey missing, got nil")
|
|
}
|
|
}
|
|
|
|
func Test_OnInit(t *testing.T) {
|
|
if kGeminiApiKey == "" {
|
|
t.Skip("kGeminiApiKey is empty, skip")
|
|
}
|
|
err := gemini.OnInit(map[string]interface{}{
|
|
"Apikey": kGeminiApiKey,
|
|
"Model": kGeminiModel,
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("OnInit err: %v", err)
|
|
}
|
|
resp, err := gemini.Chat(context.Background(), []gemini.Message{
|
|
{Role: "user", Content: "ping"},
|
|
})
|
|
if err != nil {
|
|
t.Fatalf("Chat err: %v", err)
|
|
}
|
|
fmt.Printf("resp: %s\n", resp.Content)
|
|
}
|
|
|