您已创建API Key,并已正确配置,具体获取及配置请参见1.获取并配置 API Key 。
在开通管理页开通所需模型的服务。
在模型列表获取所需模型的ID(Model ID),后续调用模型服务时需使用。
说明
如您需要控制限流、监控服务指标、加固安全、防护风险等高级能力,您也可通过 Endpoint ID 调用模型服务,具体可以参考获取 Endpoint ID。
您已完成环境配置,包括Python以及SDK的安装,具体方法请参见Python。
请参见请求参数。
说明
<Model>
需要替换为模型的 Model ID(或您在平台上创建的推理接入点 Endpoint ID)。ARK_API_KEY
是模型调用凭证,建议您配置到环境变量中,具体方法请参见3. 获取并配置 API Key。import os
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
print("----- standard request -----")
completion = client.chat.completions.create(
model="<Model>",
messages=[
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
)
print(completion.choices[0].message.content)
import os
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
print("----- multiple rounds request -----")
completion = client.chat.completions.create(
model="<Model>",
messages=[
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "花椰菜是什么?"},
{"role": "assistant", "content": "花椰菜又称菜花、花菜,是一种常见的蔬菜。"},
{"role": "user", "content": "再详细点"},
],
)
print(completion.choices[0].message.content)
import os
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
print("----- streaming request -----")
stream = client.chat.completions.create(
model="<Model>",
messages = [
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
stream=True
)
for chunk in stream:
if not chunk.choices:
continue
print(chunk.choices[0].delta.content, end="")
print()
说明
异步调用模型服务,请确保使用异步客户端 AsyncArk
初始化对象(同步调用场景为 Ark
类)。
import asyncio
import os
from volcenginesdkarkruntime import AsyncArk
client = AsyncArk(api_key=os.environ.get("ARK_API_KEY"))
async def main() -> None:
stream = await client.chat.completions.create(
model="<Model>",
messages=[
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
stream=True
)
async for completion in stream:
print(completion.choices[0].delta.content, end="")
print()
asyncio.run(main())
from volcenginesdkarkruntime import Ark
import time
import os
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
def test_function_call():
messages = [
{
"role": "system",
"content": "你是豆包,是由字节跳动开发的 AI 人工智能助手",
},
{
"role": "user",
"content": "北京今天的天气",
},
]
req = {
"model": "ep-xxxx-xx",
"messages": messages,
"temperature": 0.8,
"tools": [
{
"type": "function",
"function": {
"name": "MusicPlayer",
"description": """歌曲查询Plugin,当用户需要搜索某个歌手或者歌曲时使用此plugin,给定歌手,歌名等特征返回相关音乐。\n 例子1:query=想听孙燕姿的遇见, 输出{"artist":"孙燕姿","song_name":"遇见","description":""}""",
"parameters": {
"properties": {
"artist": {"description": "表示歌手名字", "type": "string"},
"description": {
"description": "表示描述信息",
"type": "string",
},
"song_name": {
"description": "表示歌曲名字",
"type": "string",
},
},
"required": [],
"type": "object",
},
},
},
{
"type": "function",
"function": {
"name": "get_current_weather",
"description": "",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "地理位置,比如北京市",
},
"unit": {"type": "string", "description": "枚举值 [摄氏度,华氏度]"},
},
"required": ["location"],
},
},
},
],
}
ts = time.time()
completion = client.chat.completions.create(**req)
if completion.choices[0].message.tool_calls:
print(
f"Bot [{time.time() - ts:.3f} s][Use FC]: ",
completion.choices[0].message.tool_calls[0],
)
# ========== 补充函数调用的结果 =========
req["messages"].extend(
[
completion.choices[0].message.dict(),
{
"role": "tool",
"tool_call_id": completion.choices[0].message.tool_calls[0].id,
"content": "北京天气晴,24~30度", # 根据实际调用函数结果填写,最好用自然语言。
"name": completion.choices[0].message.tool_calls[0].function.name,
},
]
)
# 再请求一次模型,获得总结。 如不需要,也可以省略
ts = time.time()
completion = client.chat.completions.create(**req)
print(
f"Bot [{time.time() - ts:.3f} s][FC Summary]: ",
completion.choices[0].message.content,
)
import os
from volcenginesdkarkruntime._constants import CLIENT_REQUEST_HEADER
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
print("----- standard request -----")
completion = client.chat.completions.create(
model="<Model>",
messages = [
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
# 自定义request id
extra_headers={CLIENT_REQUEST_HEADER: "202406251728190000B7EA7A9648AC08D9"}
)
print(completion.choices[0].message.content)
为了保证推理会话数据的传输安全,在默认的网络层加密方案基础上,方舟安全团队为在线推理的会话数据提供了端到端应用层加密方案,仅需增加一行代码,在自定义header中设置'x-is-encrypted': 'true',即可免费使用本功能,支持用户通过 SDK 在本地对推理会话的内容进行加密。更多能力介绍和原理信息请参考推理会话数据应用层加密方案。
volcengine-python-sdk
1.0.104
及以上。可以通过 pip install 'volcengine-python-sdk[ark]' -U
获得 SDK 的最新版本。import os
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
print("----- standard request -----")
completion = client.chat.completions.create(
model="<Model>",
messages = [
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
#按下述代码设置自定义header,免费开启推理会话应用层加密
extra_headers={'x-is-encrypted': 'true'}
)
print(completion.choices[0].message.content)
import os
from volcenginesdkarkruntime._exceptions import ArkAPIError
from volcenginesdkarkruntime import Ark
client = Ark(api_key=os.environ.get("ARK_API_KEY"))
# Streaming:
print("----- streaming request -----")
try:
stream = client.chat.completions.create(
model="<Model>",
messages=[
{"role": "system", "content": "你是豆包,是由字节跳动开发的 AI 人工智能助手"},
{"role": "user", "content": "常见的十字花科植物有哪些?"},
],
stream=True
)
for chunk in stream:
if not chunk.choices:
continue
print(chunk.choices[0].delta.content, end="")
print()
except ArkAPIError as e:
print(e)