package chatgpt import ( "os" "testing" ) func TestOfflineContext(t *testing.T) { key := os.Getenv("CHATGPT_API_KEY") if key == "" { t.Skip("CHATGPT_API_KEY is not set") } cli := New("") reply, err := cli.ChatWithContext("我叫老三,你是?") if err != nil { t.Fatal(err) } t.Logf("我叫老三,你是? => %s", reply) err = cli.ChatContext.SaveConversation("test.conversation") if err != nil { t.Fatalf("储存对话记录失败: %v", err) } cli.ChatContext.ResetConversation("") reply, err = cli.ChatWithContext("你知道我是谁吗?") if err != nil { t.Fatal(err) } t.Logf("你知道我是谁吗? => %s", reply) // assert.NotContains(t, reply, "老三") err = cli.ChatContext.LoadConversation("test.conversation") if err != nil { t.Fatalf("读取对话记录失败: %v", err) } reply, err = cli.ChatWithContext("你知道我是谁吗?") if err != nil { t.Fatal(err) } t.Logf("你知道我是谁吗? => %s", reply) // AI 理应知道他叫老三 // assert.Contains(t, reply, "老三") } func TestMaintainContext(t *testing.T) { key := os.Getenv("CHATGPT_API_KEY") if key == "" { t.Skip("CHATGPT_API_KEY is not set") } cli := New("") cli.ChatContext = NewContext( WithMaxSeqTimes(1), WithMaintainSeqTimes(true), ) reply, err := cli.ChatWithContext("我叫老三,你是?") if err != nil { t.Fatal(err) } t.Logf("我叫老三,你是? => %s", reply) reply, err = cli.ChatWithContext("你知道我是谁吗?") if err != nil { t.Fatal(err) } t.Logf("你知道我是谁吗? => %s", reply) // 对话次数已经超过 1 次,因此最先前的对话已被移除,AI 理应不知道他叫老三 // assert.NotContains(t, reply, "老三") } func init() { // 本地加载适用于本地测试,如果要在github进行测试,可以透过传入 secrets 到环境参数 // _ = godotenv.Load(".env.local") }