快速入门¶
环境配置要求¶
- Go 版本:推荐使用 Go 1.18 及以上版本。如果需要使用最新的
pipeline泛型工作流特性,请确保您的环境安装了 Go 1.24+。 - 网络环境:如果使用海外模型(如 OpenAI、Anthropic),请确保您的网络环境能够顺利访问相关 API 端点。
安装步骤¶
在您的 Go 项目根目录下,运行以下命令获取 GoChat:
如有必要,清理并验证依赖项:
基础使用示例¶
以下提供一个可直接运行的基础示例。该示例展示了如何使用 OpenAI 兼容客户端进行一次基础对话。
1. 基础对话 (Basic Chat)¶
创建一个 main.go 文件,并填入以下代码。运行前请确保已设置相关的环境变量(例如 DASHSCOPE_API_KEY 或您所用厂商的 API Key):
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/DotNetAge/gochat/pkg/client/base"
"github.com/DotNetAge/gochat/pkg/client/openai"
"github.com/DotNetAge/gochat/pkg/core"
)
func main() {
// 1. 获取您的 API Key
apiKey := os.Getenv("DASHSCOPE_API_KEY")
if apiKey == "" {
log.Fatal("请先设置 DASHSCOPE_API_KEY 环境变量")
}
// 2. 初始化配置并创建客户端
config := openai.Config{
Config: base.Config{
APIKey: apiKey,
Model: "qwen-plus", // 替换为您想使用的具体模型
// BaseURL: "https://dashscope.aliyuncs.com/compatible-mode/v1", // 默认已内置,也可自定义
},
}
client, err := openai.New(config)
if err != nil {
log.Fatalf("创建客户端失败: %v", err)
}
// 3. 构建消息体
messages := []core.Message{
core.NewSystemMessage("你是一个专业的 Go 语言高级开发工程师。"),
core.NewUserMessage("请解释一下 Go 语言中 Context 的核心作用。"),
}
// 4. 发起请求并使用 Functional Options 模式配置额外参数
ctx := context.Background()
resp, err := client.Chat(ctx, messages,
core.WithTemperature(0.7),
core.WithMaxTokens(1000),
)
if err != nil {
log.Fatalf("对话请求失败: %v", err)
}
// 5. 打印结果和 Token 消耗
fmt.Println("=== AI 回复 ===")
fmt.Println(resp.Content)
fmt.Println("\n=== Token 统计 ===")
fmt.Printf("总计消耗: %d Tokens\n", resp.Usage.TotalTokens)
}
2. 流式输出对话 (Streaming Chat)¶
对于长文本生成,流式输出能显著提升用户体验:
package main
import (
"context"
"fmt"
"log"
"os"
"github.com/DotNetAge/gochat/pkg/client/base"
"github.com/DotNetAge/gochat/pkg/client/openai"
"github.com/DotNetAge/gochat/pkg/core"
)
func main() {
client, _ := openai.New(openai.Config{
Config: base.Config{
APIKey: os.Getenv("API_KEY"),
Model: "qwen-plus",
},
})
messages := []core.Message{
core.NewUserMessage("给我写一首关于秋天的现代诗。"),
}
stream, err := client.ChatStream(context.Background(), messages)
if err != nil {
log.Fatalf("创建流失败: %v", err)
}
defer stream.Close()
fmt.Print("AI: ")
// 迭代流事件
for stream.Next() {
event := stream.Event()
if event.Err != nil {
log.Printf("\n流异常: %v\n", event.Err)
break
}
// 根据事件类型处理
switch event.Type {
case core.EventThinking:
// 处理推理模型的思考过程
fmt.Printf("\033[90m%s\033[0m", event.Content) // 灰色打印思考内容
case core.EventContent:
// 处理标准内容输出
fmt.Print(event.Content)
}
}
fmt.Println()
}
运行以上代码,即可成功接入并体验 GoChat 的核心功能。如需了解更多模块(如 Embedding、Pipeline 等),请参阅模块文档。