大模型API类商品使用
本文介绍的是:当用户在云商店购买大模型API商品后,如何调用大模型API接口。
API认证方式概述
在调用API商品时,云商店AI大模型和Agent类型的API商品,支持API Key认证。
API Key认证(兼容OpenAI API格式鉴权):AI大模型和Agent类型的API商品支持该种鉴权方式,API Key需要通过买家中心-API Keys菜单创建生成,客户端程序将API Key放到Request Header中,从而进行身份认证。
API Key请求说明
获取API Key
在调用商家基于云商店Agents网关部署的大模型或Agent服务时,需要填写API Key用于接口的鉴权认证。
- 前往我的云商店>已购买服务>按需/套餐包>API Key管理。
- 在“API Key管理”页面,单击“创建API Key”,填写描述信息后,单击“创建”会返回“您的密钥”,请复制保存密钥,单击“关闭”后将无法再次查看密钥
- 最多支持创建20个密钥,密钥只会在新建后显示一次,请妥善保存。
- 当密钥丢失将无法找回,请新建API Key获取新的访问密钥。
- 如调用接口,http状态码返回如下情况时,请等API商品开通成功后再尝试调用。
{ "error_msg": "can not find control info by path", "error_code": "96010001" }
通过API Key 调用
参照如下代码示例。注意:不同大模型的参数可能略有区别,请以商品详情页的API接口详情为准。
- Python示例代码如下所示:
- 使用普通requests包调用。
import requests import json if __name__ == '__main__': url = "https:/example.com/v1/infers/937cabe5-d673-47f1-9e7c-2b4de06*****/v1/chat/completions" api_key = "<your_apiKey>" # 把<your_apiKey>替换成已获取的API Key。 # Send request. headers = { 'Content-Type': 'application/json', 'Authorization': f'Bearer {api_key}' } data = { "model": "******", # 调用时的模型名称。 "max_tokens": 1024, # 最大输出token数。 "messages": [ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "hello"} ], # 是否开启流式推理,默认为False,表示不开启流式推理。 "stream": False, # 在流式输出时是否展示使用的token数目。只有当stream为True时该参数才会生效。 # "stream_options": {"include_usage": True}, # 控制采样随机性的浮点数,值较低时模型更具确定性,值较高时模型更具创造性。"0"表示贪婪取样。默认为0.6。 "temperature": 0.6 } response = requests.post(url, headers=headers, data=json.dumps(data), verify=False) # Print result. print(response.status_code) print(response.text)
- 使用OpenAI SDK调用。
from openai import OpenAI if __name__ == '__main__': base_url = "https://example.com/v1/infers/937cabe5-d673-47f1-9e7c-2b4de06******/v1" api_key = "<your_apiKey>" # 把<your_apiKey>替换成已获取的API Key。 client = OpenAI(api_key=api_key, base_url=base_url) response = client.chat.completions.create( model="******", messages=[ {"role": "system", "content": "You are a helpful assistant"}, {"role": "user", "content": "Hello"}, ], max_tokens=1024, temperature=0.6, stream=False ) # Print result. print(response.choices[0].message.content)
- curl命令示例如下所示:
curl -X POST "https://example.com/v1/infers/937cabe5-d673-47f1-9e7c-2b4de06*****/v1/chat/completions" -H "Content-Type: application/json" -H "Authorization: Bearer yourApiKey" -d '{"model": "******", "max_tokens": 1024, "messages": [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "hello"}], "stream": false, "temperature": 0.6 }' --insecure
- 使用普通requests包调用。
- 请求参数说明
参数
是否必选
参数类型
描述
model
是
Str
调用时的模型名称。
messages
是
Array
请求输入的问题。
stream_options
否
Object
该参数用于配置在流式输出时是否展示使用的token数目。只有当stream为True的时候该参数才会激活生效。如果您需要统计流式输出模式下的token数目,可将该参数配置为 stream_options={"include_usage":True}。
max_tokens
否
Int
每个输出序列要生成的最大Tokens数量。
top_k
否
Int
控制要考虑的前几个Tokens的数量的整数。设置为“-1”表示考虑所有Tokens。适当降低该值可以减少采样时间。
top_p
否
Float
控制要考虑的前几个Tokens的累积概率的浮点数。取值范围:0~1 设置为“1”表示考虑所有Tokens。
temperature
否
Float
控制采样的随机性的浮点数。较低的值使模型更加确定性,较高的值使模型更加随机。 “0”表示贪婪采样。
stop
否
None/ Str/List
用于停止生成的字符串列表。返回的输出将不包含停止字符串。例如,设置为["你","好"]时,在生成文本过程中,遇到“你”或者“好”将停止文本生成。
stream
否
Bool
是否开启流式推理。默认为“False”,表示不开启流式推理。
n
否
Int
返回多条正常结果。
● 不使用beam_search场景下,n取值建议为1≤n≤10。如果n>1时,必须确保不使用greedy_sample采样,也就是top_k > 1,temperature > 0。
● 使用beam_search场景下,n取值建议为 1
use_beam_search
否
Bool
是否使用beam_search替换采样。使用该参数时,如下参数必须按要求设置。
● n:大于1
● top_p:1.0
● top_k:-1
● temperature:0.0
presence_penalty
否
Float
presence_penalty表示会根据当前生成的文本中新出现的词语进行奖惩。取值范围 [-2.0,2.0]。
frequency_penalty
否
Float
frequency_penalty会根据当前生成的文本中各个词语的出现频率进行奖惩。取值范围 [-2.0,2.0]。
length_penalty
否
Float
length_penalty表示在beam search过程中,对于较长的序列,模型会给予较大的惩罚。使用该参数时,必须添加如下三个参数,且必须按要求设置。
● top_k:-1
● use_beam_search:true
● best_of:大于1
ignore_eos
否
Bool
ignore_eos表示是否忽略EOS并且继续生成 Token。
- 普通requests包、OpenAI SDK、curl命令的返回示例如下所示:
{ "id": "cmpl-29f7a172056541449eb1f9d31c*****", "object": "chat.completion", "created": 17231*****, "model": "Qwen2-7B", "choices": [ { "index": 0, "message": { "role": "assistant", "content": "你好!很高兴能为你提供帮助。有什么问题我可以回答或帮你解决吗?" }, "logprobs": null, "finish_reason": "stop", "stop_reason": null } ], "usage": { "prompt_tokens": 20, "total_tokens": 38, "completion_tokens": 18 } }
- 思维链模型的返回示例如下所示:
messages = [{"role": "user", "content": "9.11 and 9.8, which is greater?"}] response = client.chat.completions.create(model=model, messages=messages) reasoning_content = response.choices[0].message.reasoning_content content = response.choices[0].message.content print("reasoning_content:", reasoning_content) print("content:", content)
- 返回参数说明
参数 |
参数类型 |
描述 |
---|---|---|
id |
Str |
请求ID。。 |
object |
Str |
请求任务。 |
created |
Int |
请求生成的时间戳。 |
model |
Str |
调用的模型名。 |
choices |
Array |
模型生成内容。 |
usage |
Object |
请求输入长度、输出长度和总长度。 |
reasoning_content |
Str |
当模型支持思维链时,模型的思考内容。对于支持思维链的模型,开启流式输出时,会首先在reasoning_content字段输出思考内容,然后在content中输出回答内容。 |
content |
Str |
模型的回答内容。 |