本节将说明如何基于多轮历史对话,使用大语言模型进行回答生成。
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-pro-32k | 250115, character-250715 |
Doubao-1-5-lite-32k | 250115 |
模型名称 | 可选版本 |
|---|---|
Doubao-seed-2-0-pro | 260215 |
Doubao-seed-2-0-lite | 260215 |
Doubao-seed-2-0-mini | 260215 |
Doubao-seed-1-8 | 251228 |
Doubao-seed-1-6-vision | 250815 |
Doubao-seed-1-6 | 251015, 250615 |
Doubao-seed-1-6-flash | 250828, 250615 |
Doubao-1-5-vision-pro-32k | 250115 |
方舟模型下线说明:https://www.volcengine.com/docs/82379/1350667?lang=zh
字段 | 类型 | 参数说明 |
|---|---|---|
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,可参考 使用说明
本示例使用 AK/SK(IAM)鉴权方式调用 chat_completions(当前该接口不支持 APIKey 鉴权)。
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)) } }