API调用示例
更新时间:2024-09-27
针对于AIAK加速引擎提供的LLaMA等大语言模型,在模型部署后支持API调用。
本期提供Chat API,用于发起对话。
Chat API调用说明
接口描述
调用本接口,发起一次对话请求。
请求说明
使用模型部署服务的请求地址:http://{流量接入点地址}/v1/model/$MODEL_NAME/chat/completions
使用自定义部署服务的请求地址:http://{ip:port}/v1/model/$MODEL_NAME/chat/completions
$MODEL_NAME为服务名称 请求方式:Post
请求参数
请求参数说明
参数 | 类型 | 是否必选 | 默认值 | 限制 | 描述 |
model | String | 是 | - | - | 请求服务时的主模型名称。 |
lora_model | String | 否 | - | 50个字符以内,符合RFC 1123命名规则 | 请求服务时的Lora模型名称 |
messages | List messages | 是 | - | 将messages中所有content拼接起来传递给aiak | 聊天上下文信息。说明: (1)messages成员不能为空,1个成员表示单轮对话,多个成员表示多轮对话。 (2)最后一个messages为当前请求的信息,前面的message为历史对话信息。 |
temperature | Float | 否 | 1.0 | [0,2.0] | 温度系数,值越高(如0.8),输出越随机,而值越低(如0.2),输出就越集中和确定。 建议 temperature 和 top_p 二选一设置。 |
top_p | Float | 否 | 1.0 | [0,1.0] | 替代温度系数的一种采样方式,称为核采样。top-p值通常设置的比较高,如p=0.75,可以有效避免长尾中的低概率token作为候选项。 建议 temperature 和 top_p 二选一设置。 |
n | Int | 否 | 1 | - | 对于一个输入消息生成几个可选的应答。 |
stream | Boolean | 否 | false | - | 是否开启流式应答。 |
stop | List <String> | 否 | null | aiak多个stop word格式为“aaa,bbb” | 生成文本的终止条件。 |
max_tokens | Int | 否 | 100 | 10000 | 最多生成多少 token 数。 |
frequency_penalty | Float | 否 | 0 | [-2.0, 2.0] | 降低相同 token 重复出现的频率。值越大,重复出现的频率越低。 |
repetition_penalty | Float | 否 | 1.0 | (0.0, 2.0] | 将重复罚分应用于束搜索和采样的Logits,与presence_penalty互斥。 |
ignore_eos | Boolean | 否 | False | - | 在生成过程中是否忽略结束符号。 |
message 结构体
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
role | string | 否 | 消息的作者,枚举值:user, assistant、system user:用户的消息 assistant:模型的应答 system:系统设置 默认值:user |
content | string | 是 | 消息内容 |
返回参数
参数 | 类型 | 描述 |
---|---|---|
choices | List<choice> | 回复内容,默认只有1个,除非要求返回多个可选应答 |
usage | List<usage> | token统计信息,token数 = 汉字数+单词数(仅为估算逻辑) |
choice 结构体
参数 | 类型 | 说明 |
---|---|---|
index | Int | 可选应答的序号 |
message | List<message> | 回复的内容 |
delta | List<message> | 流式应答时的增量内容,首句只含 role,content 为空 |
usage 结构体
参数 | 类型 | 说明 |
---|---|---|
prompt_tokens | Int | 输入问题的tokens数。 |
completion_tokens | Int | 输出回答的tokens数 |
total_tokens | Int | 输入问题+输出答案的总tokens 数 |
调用示例
单轮会话示例
请求示例
import openai
if __name__ == '__main__':
model_name = "llama-123" #创建的服务名称,请求地址中的$MODEL_NAME
openai.ChatCompletion.OBJECT_NAME = f"model.{model_name}.chat.completions"
completion = openai.ChatCompletion.create(api_base="http://{流量接入点地址}/v1",
api_key="aihc",
model=model_name,
temperature=0.8,
top_p=0.8,
n=1,
max_tokens=50,
frequency_penalty=1.5,
stop=["."],
messages= [{'role':'user','content':'Hello,who are you.'}])
for choice in completion.choices:
print("[" + choice.message.content + "]")
print("\r\n")
返回示例
{
"id": "chatcmpl-e8de9768-6965-47aa-9a9b-bdc7357b6aa1",
"object": "chat.completion",
"created": "2023-08-01T11:50:16.722769874+08:00",
"model": "llama-123",
"choices": [
{
"message": {
"role": "assistant",
"content": " \u2047 Hello,who are you.\nI am a student from China and I want to study in your university next year ."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 4,
"completion_tokens": 25,
"total_tokens": 29
}
}
流式会话示例
请求示例
import openai
if __name__ == '__main__':
response = openai.ChatCompletion.create(
api_base="http://{流量接入点地址}/v1",
api_key="aihc",
model="hsftest47",
messages=[{"role": "user",
"content": "Hello,who are you."}],
temperature=1.0,
top_p=0.8,
n=1,
max_tokens=200,
frequency_penalty=1.0,
stop=["!"],
stream=True
)
for chunk in response:
print(chunk)
返回示例
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {
"role": "assistant"
},
"finish_reason": null
}
]
}
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {
"content": " \u2047 Hello,who are you.\nI am"
},
"finish_reason": null
}
]
}
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {
"content": " a student from China and"
},
"finish_reason": null
}
]
}
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {
"content": " I want to study in"
},
"finish_reason": null
}
]
}
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {
"content": " your university next year ."
},
"finish_reason": null
}
]
}
{
"id": "chatcmpl-ed54a040-526d-49a1-836f-ebb3be35b2d0",
"object": "chat.completion.chunk",
"created": "2023-07-27T18:45:57.363144072+08:00",
"model": "llama-123",
"choices": [
{
"delta": {},
"finish_reason": "stop"
}
]
}