您已创建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)