本节将说明如何基于多轮历史对话,使用大语言模型进行回答生成
chat_completions 用于向大模型发起一次对话请求,与新升级的search_knowledge 联通,可以完成标准的检索生成链路。
参数 | 子参数 | 类型 | 是否必选 | 默认值 | 参数说明 |
|---|---|---|---|---|---|
Model | -- | string | 是 | Doubao-1-5-pro-32k | 想要用于在线生成的大模型
公共推理接入点模型可选范围见对话模型和图像理解模型。
|
ModelVersion | -- | *string | 否 | -- | |
Thinking | -- | interface{} | 否 | enabled | 控制模型是否开启深度思考模式
当前支持的模型详情见:thinking
|
APIKey | -- | *string | 否 | -- | 接入点 API Key |
Messages | -- | []model.ChatMessage | 是 | -- | 发出消息的对话参与者角色,可选值包括:
多轮文本问答: 串联脚本示例可参考知识库多轮检索问答样例
多轮图文理解:串联脚本示例可参考知识库图文问答样例
|
Stream | -- | *bool | 否 | False | 响应内容是否流式返回
|
MaxTokens | -- | *int | 否 | 4096 | 模型可以生成的最大 token 数量
|
ReturnTokenUsage | -- | *bool | 否 | False | 是否返回token用量统计 |
Temperature | -- | *float64 | 否 | 0.1 | 采样温度 |
模型名称 | 可选版本 |
|---|---|
Doubao-1-5-thinking-pro | 250415 |
Deepseek-V3-128k | 250324, 241226 |
Deepseek-R1-128k | 250528, 250120 |
Doubao-1-5-pro-256k | 250115 |
Doubao-1-5-pro-32k | 250115(默认), character-250715, character-250228 |
Doubao-1-5-lite-32k | 250115 |
Doubao-pro-256k | 241115, 240828 |
Doubao-pro-32k | 241215, 240828, 240615, character-241215, character-240828, character-240528 |
Doubao-pro-128k | 240628, 240515(即将下线) |
Doubao-lite-32k | 240828,240628, 240428(即将下线), character-250228, character-241015 |
Doubao-lite-128k | 240828, 240428 |
模型名称 | 可选版本 |
|---|---|
Doubao-seed-1-8 | 251228 |
Doubao-seed-1-6-vision | 240428, 240828 |
Doubao-seed-1-6-thinking | 250715, 250615 |
Doubao-seed-1-6 | 251015, 250615 |
Doubao-seed-1-6-flash | 250828, 250715, 250615 |
Doubao-1-5-thinking-pro | m-250428, m-250415 |
Doubao-1-5-vision-pro | 250328 |
Doubao-1-5-vision-lite | 250315 |
Doubao-1-5-vision-pro-32k | 250115 |
Doubao-vision-pro-32k | 241028 |
字段 | 类型 | 参数说明 |
|---|---|---|
Code | int | 状态码 |
Message | string | 返回信息 |
RequestID | string | 标识每个请求的唯一标识符 |
Data | *ChatCompletionResult | ChatCompletionResult |
字段 | 类型 | 参数说明 |
|---|---|---|
ReasoningContent | *string | 推理模型生成的内容 |
GeneratedAnswer | *string | 模型生成的回答 |
Usage | interface{} | token 用量统计 |
Prompt | *string | prompt 内容 |
Model | *string | 模型名称 |
FinishReason | *string | 结束原因 |
TotalTokens | interface{} | 总 token 数量 |
状态码 | http状态码 | 返回信息 | 状态码说明 |
|---|---|---|---|
0 | 200 | success | 成功 |
1000001 | 401 | unauthorized | 缺乏鉴权信息 |
1000002 | 403 | no permission | 权限不足 |
1000003 | 400 | invalid request:%s | 非法参数 |
请先完成SDK初始化,再运行代码,详见初始化SDK
请将 main 函数中的 accessKey、secretKey 分别替换为您自己的 AK 和 SK。
package main import ( "context" "encoding/json" "fmt" "github.com/volcengine/vikingdb-go-sdk/knowledge" "github.com/volcengine/vikingdb-go-sdk/knowledge/model" "os" "time" ) func main() { var ( accessKey = os.Getenv("VIKINGDB_AK") secretKey = os.Getenv("VIKINGDB_SK") endpoint = "https://api-knowledgebase.mlp.cn-beijing.volces.com" region = "cn-beijing" ) client, err := knowledge.New( knowledge.AuthIAM(accessKey, secretKey), knowledge.WithEndpoint(endpoint), knowledge.WithRegion(region), knowledge.WithTimeout(time.Second*30), ) if err != nil { fmt.Printf("New client failed, err: %v\n", err) return } ctx := context.Background() // 1. Prepare messages messages := []model.ChatMessage{ { Role: "user", Content: "Hello, who are you?", }, } // 2. Call ChatCompletion resp, err := client.ChatCompletion(ctx, model.ChatCompletionRequest{ Model: "Doubao-1-5-pro-32k", // Replace with your model endpoint Messages: messages, }) if err != nil { fmt.Printf("ChatCompletion failed, err: %v\n", err) return } jsonData, _ := json.Marshal(resp) fmt.Printf("Response: %s\n", string(jsonData)) //3. Call ChatCompletion Stream stream := true ch, err := client.ChatCompletionStream(ctx, model.ChatCompletionRequest{ Model: "Doubao-1-5-pro-32k", // Replace with your model endpoint Messages: messages, Stream: &stream, }) if err != nil { fmt.Printf("ChatCompletionStream failed, err: %v\n", err) return } // Read from channel for resp := range ch { jsonData, _ := json.Marshal(resp) fmt.Printf("Chunk: %s\n", string(jsonData)) } }