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

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)
}