当您使用官方 SDK 时,当需要并发调用,或者设置最大超时时间、设置header等典型的使用,可以参考本说明。
设置Base Url 初始化时 Ark
、AsyncArk
实例时,默认无需配置base_url
参数,当您需使用其他base_url
时,可以手动指定base_url
参数。
import os
from volcenginesdkarkruntime import Ark
client = Ark(
api_key=os.environ.get("ARK_API_KEY"),
# 以华北 2 (北京) 为例,<ARK_BASE_URL> 处应改为 https://ark.cn-beijing.volces.com/api/v3
base_url="<ARK_BASE_URL>"
)
import (
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
)
// 以华北 2 (北京) 为例,<ARK_BASE_URL> 处应改为 https://ark.cn-beijing.volces.com/api/v3
client := arkruntime.NewClientWithApiKey(
os.Getenv("ARK_API_KEY"),
arkruntime.WithBaseUrl("<ARK_BASE_URL>"),
)
import com.volcengine.ark.runtime.service.ArkService;
public class CreateArkClientExample {
public static void main(String[] args) {
String apiKey = System.getenv("ARK_API_KEY");
ArkService service = ArkService.builder()
.apiKey(apiKey)
.baseUrl("<ARK_BASE_URL>") // 以华北 2 (北京) 为例,<ARK_BASE_URL> 处应改为 https://ark.cn-beijing.volces.com/api/v3
.build();
}
// do your operation...
}
设置超时&重试次数 import os
from volcenginesdkarkruntime import Ark
client = Ark(
api_key=os.environ.get("ARK_API_KEY"),
# 设置超时时间
timeout=120,
# 设置重试次数
max_retries=2,
)
import (
"os"
"time"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
)
client := arkruntime.NewClientWithApiKey(
os.Getenv("ARK_API_KEY"),
arkruntime.WithTimeout(2*time.Minute), //设置超时时间
arkruntime.WithRetryTimes(2), //设置最大重试次数
)
package com.example;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
public class ChatCompletionsExample {
public static void main(String[] args) {
String apiKey = System.getenv("ARK_API_KEY");
ArkService service = ArkService
.builder()
.apiKey(apiKey)
.timeout(Duration.ofSeconds(120))// 设置超时时间为120秒
.connectTimeout(Duration.ofSeconds(20))// 设置连接超时时间为20秒
.retryTimes(2)// 设置重试次数为2次
.build();
final List<ChatMessage> messages = new ArrayList<>();
final ChatMessage userMessage = ChatMessage.builder().role(ChatMessageRole.USER).content("你好")
.build();
messages.add(userMessage);
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model("<MODEL>") //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
.messages(messages)
.build();
service.createChatCompletion(chatCompletionRequest).getChoices()
.forEach(choice -> System.out.println(choice.getMessage().getContent()));
// shutdown service
service.shutdownExecutor();
}
}
使用Access Key鉴权 import os
from volcenginesdkarkruntime import Ark
client = Ark(
ak=os.environ.get("VOLC_ACCESSKEY"),
sk=os.environ.get("VOLC_SECRETKEY"),
)
import (
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
)
client := arkruntime.NewClientWithAkSk(
os.Getenv("VOLC_ACCESSKEY"),
os.Getenv("VOLC_SECRETKEY"),
)
import com.volcengine.ark.runtime.service.ArkService;
public class CreateArkClientExample1 {
public static void main(String[] args) {
String ak = System.getenv("VOLC_ACCESSKEY");
String sk = System.getenv("VOLC_SECRETKEY");
ArkService service = ArkService.builder().ak(ak).sk(sk)
.build();
}
// do your operation...
}
自定义的 header
字段采用键值对(key-value)结构,以对象形式呈现,具体格式示例如下:
{
"key1": "value1",
"key2": "value2",
...,
"keyN": "valueN"
}
可以用于传递额外信息,如配置 ID来串联日志,使能数据加密能力,下面是典型示例。
问题定位 您可以在请求时,为多个请求设置 key 为 **** X-Client-Request-Id
,value 配置为自定义的 ID,并提供 ID 给方舟售后团队,为您串联客户端和服务端日志,方便问题定位。
import os
from volcenginesdkarkruntime import Ark
client = Ark(
api_key=os.environ.get("ARK_API_KEY"),
)
completion = client.chat.completions.create(
# 替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
model="<MODEL>",
messages = [
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
# 自定义request id
extra_headers={"X-Client-Request-Id": "My-Request-Id"}
)
print(completion.choices[0].message.content)
package main
import (
"context"
"fmt"
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
"github.com/volcengine/volcengine-go-sdk/volcengine"
)
func main() {
client := arkruntime.NewClientWithApiKey(
os.Getenv("ARK_API_KEY"),
)
ctx := context.Background()
req := model.CreateChatCompletionRequest{
Model: "<MODEL>", //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
Messages: []*model.ChatCompletionMessage{
{
Role: model.ChatMessageRoleUser,
Content: &model.ChatCompletionMessageContent{
StringValue: volcengine.String("常见的十字花科植物有哪些?"),
},
},
},
}
// 自定义request id
resp, err := client.CreateChatCompletion(
ctx,
req,
arkruntime.WithCustomHeader(model.ClientRequestHeader, "my-request-id"), // 自定义请求头
)
if err != nil {
fmt.Printf("standard chat error: %v
", err)
return
}
fmt.Println(*resp.Choices[0].Message.Content.StringValue)
}
package com.example;
import com.volcengine.ark.runtime.Const;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
public class ChatCompletionsExample3 {
public static void main(String[] args) {
String apiKey = System.getenv("ARK_API_KEY");
ArkService service = ArkService.builder().apiKey(apiKey).build();
final List<ChatMessage> messages = new ArrayList<>();
final ChatMessage userMessage = ChatMessage.builder().role(ChatMessageRole.USER).content("常见的十字花科植物有哪些?").build();
messages.add(userMessage);
ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest.builder()
.model("<MODEL>")
.messages(messages)
.build();
// 使用自定义的请求头
service.createChatCompletion(chatCompletionRequest, new HashMap<String, String>(){{put(Const.CLIENT_REQUEST_HEADER, "my_request_id");}}).getChoices().forEach(choice -> System.out.println(choice.getMessage().getContent()));
// shutdown service
service.shutdownExecutor();
}
}
加密数据 为了保证推理会话数据的传输安全,你可以为在线推理的会话数据加密。使能能力后,SDK 会对推理会话的内容进行加密。
更多能力介绍和原理信息请参考推理会话数据应用层加密方案 。
版本要求:需要保证 SDK 版本 volcengine-python-sdk
1.0.104
及以上。参考升级 Python SDK 获得 SDK 的最新版本。 能力支持:仅支持文本生成 模型和视觉理解 图片理解模型(注:图片仅支持 Base64 图片加密, URL 图片无法加密)请求,仅支持官方 Python SDK 的 对话(Chat) API ,支持单轮、多轮会话,支持流式、非流式,同步、异步接口。 import os
from volcenginesdkarkruntime import Ark
client = Ark(
api_key=os.environ.get("ARK_API_KEY"),
)
completion = client.chat.completions.create(
# 替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
model="<MODEL>",
messages = [
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
#按下述代码设置自定义header,免费开启推理会话应用层加密
extra_headers={'x-is-encrypted': 'true'}
)
print(completion.choices[0].message.content)
单例请求 请使用单例方式请求模型服务,勿重复创建实例导致额外资源消耗。
import os
from volcenginesdkarkruntime import Ark
client = Ark(
api_key=os.environ.get("ARK_API_KEY"),
)
# 请求1
completion = client.chat.completions.create(
# 替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
model="<MODEL>",
messages=[
{"role": "user", "content": "今天天气不错"},
],
)
print(completion.choices[0].message.content)
# 请求2
completion = client.chat.completions.create(
# 替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
model="<MODEL>",
messages=[
{"role": "user", "content": "你好"},
],
)
print(completion.choices[0].message.content)
package main
import (
"context"
"fmt"
"os"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
"github.com/volcengine/volcengine-go-sdk/volcengine"
)
func main() {
client := arkruntime.NewClientWithApiKey(
os.Getenv("ARK_API_KEY"),
)
ctx := context.Background()
// 第一次请求
req1 := model.CreateChatCompletionRequest{
Model: "<MODEL>", //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
Messages: []*model.ChatCompletionMessage{
{
Role: model.ChatMessageRoleUser,
Content: &model.ChatCompletionMessageContent{
StringValue: volcengine.String("今天天气不错?"),
},
},
},
}
resp1, err := client.CreateChatCompletion(ctx, req1)
if err != nil {
fmt.Printf("standard chat error: %v
", err)
return
}
fmt.Println(*resp1.Choices[0].Message.Content.StringValue)
// 第二次请求
req2 := model.CreateChatCompletionRequest{
Model: "<MODEL>", //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
Messages: []*model.ChatCompletionMessage{
{
Role: model.ChatMessageRoleUser,
Content: &model.ChatCompletionMessageContent{
StringValue: volcengine.String("你好"),
},
},
},
}
resp2, err := client.CreateChatCompletion(ctx, req2)
if err != nil {
fmt.Printf("standard chat error: %v
", err)
return
}
fmt.Println(*resp2.Choices[0].Message.Content.StringValue)
}
package com.example;
import com.volcengine.ark.runtime.model.completion.chat.ChatCompletionRequest;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessage;
import com.volcengine.ark.runtime.model.completion.chat.ChatMessageRole;
import com.volcengine.ark.runtime.service.ArkService;
import java.util.ArrayList;
import java.util.List;
public class ChatCompletionsExample4 {
public static void main(String[] args) {
String apiKey = System.getenv("ARK_API_KEY");
ArkService service = ArkService.builder()
.apiKey(apiKey)
.build();
// 第一次请求
final List<ChatMessage> messages1 = new ArrayList<>();
final ChatMessage userMessage1 = ChatMessage.builder().role(ChatMessageRole.USER).content("今天天气不错?").build();
messages1.add(userMessage1);
ChatCompletionRequest chatCompletionRequest1 = ChatCompletionRequest.builder()
.model("<MODEL>") //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
.messages(messages1)
.build();
service.createChatCompletion(chatCompletionRequest1).getChoices().forEach(choice -> System.out.println(choice.getMessage().getContent()));
// 第二次请求
final List<ChatMessage> messages2 = new ArrayList<>();
final ChatMessage userMessage2 = ChatMessage.builder().role(ChatMessageRole.USER).content("你好").build();
messages2.add(userMessage2);
ChatCompletionRequest chatCompletionRequest2 = ChatCompletionRequest.builder()
.model("<MODEL>") //替换为Model ID,请从文档获取 https://www.volcengine.com/docs/82379/1330310
.messages(messages2)
.build();
service.createChatCompletion(chatCompletionRequest2).getChoices().forEach(choice -> System.out.println(choice.getMessage().getContent()));
// shutdown service
service.shutdownExecutor();
}
}