我們可以參考某一個大模型對應的官方文檔,學習如何調用其API

智譜AI大模型API調用的過程

智譜AI是清華大學計算機系技術成果轉化而來的公司,公司產品包括:中英雙語千億級超大規模預訓練模型GLM-130B,并基于此推出對話模型ChatGLM;高效率代碼模型CodeGeeX;多模態理解模型CogVLM和文生圖模型CogView等。

獲取API_KEY

調用API首先需要獲取API,每個用戶需要自己注冊申請對應的API。進入智譜AI官網,注冊后申請API,復制API_KEY以便后續調用:

現在打開API調用參考文檔:通用大模型和圖像大模型,直接復制其代碼,看看輸出是什么樣的!

GLM_4同步調用

同步調用就是創建一個調用任務后,一直運行這個任務直到收到大模型的響應輸出;對應的是異步調用,創建調用任務后獲得這個任務的request-id,之后可以去干其他事情,后續通過這個任務ID查看模型的輸出。

from zhipuai import ZhipuAI  # 先安裝ZhipuAI的包 pip install ZhipuAI
client = ZhipuAI(api_key="xxxx") # 填寫您自己的APIKey
response = client.chat.completions.create(
model="glm-4", # 填寫需要調用的模型名稱
messages=[
# messages是json格式的數據,大模型逐條響應
{"role": "user", "content": "作為一名營銷專家,請為我的產品創作一個吸引人的slogan"},
{"role": "assistant", "content": "當然,為了創作一個吸引人的slogan,請告訴我一些關于您產品的信息"},
{"role": "user", "content": "智譜AI開放平臺"},
{"role": "assistant", "content": "智啟未來,譜繪無限一智譜AI,讓創新觸手可及!"},
{"role": "user", "content": "創造一個更精準、吸引人的slogan"}
],
)
# 直接輸出response,查看響應的具體內容
print(response)

輸出的完整json數據:

如果只關注最終輸出的message的content,可以只取response.choices[0].message.content

上面例子傳入大模型的message列表里面,有user的信息,也有assistant的信息,大模型實際響應的只有user對應的content,但是assistant的內容可以為大模型提供一些上下文或者提示。

message只傳入用戶的輸入,并多次問答的例子如下:

from zhipuai import ZhipuAI

client = ZhipuAI(api_key="xxxxxx") # 填寫您自己的APIKey
# 循環提問/對話
while True:
# 接收用戶輸入作為問題
prompt = input("\nuser:")
response = client.chat.completions.create(
model="glm-4", # 填寫需要調用的模型名稱
messages=[
{"role": "user", "content": prompt}
],
)
answer = response.choices[0].message.content
print("\nZhipuAI:",answer) # 只輸出大模型響應的message.context
123456789101112131415

結果:

上述例子雖然user能夠無限次的與大模型進行對話(交互),但由于message中只有用戶單次的問題,沒有保存上下文的信息,因此如果前后問題有銜接,這樣的方式是不行的。應該使用多輪對話,將每輪對話的問答保存在message中,傳給大模型為其提供對話的上下文。

GLM_4異步調用

參考官方文檔,異步調用獲取結果包括兩步:①獲取模型的響應ID,②根據ID查詢響應結果;

import time
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="xxxxxx") # 請填寫您自己的APIKey

response = client.chat.asyncCompletions.create(
model="glm-4", # 填寫需要調用的模型名稱
messages=[
{
"role": "user",
"content": "請你作為童話故事大王,寫一篇短篇童話故事,故事的主題是要永遠保持一顆善良的心,要能夠激發兒童的學習興趣和想象力,同時也能夠幫助兒童更好地理解和接受故事中所蘊含的道理和價值觀。"
}
],
)
# 獲取響應ID
task_id = response.id
task_status = ''
get_cnt = 0

while task_status != 'SUCCESS' and task_status != 'FAILED' and get_cnt <= 40:
# 查詢響應結果
result_response = client.chat.asyncCompletions.retrieve_completion_result(id=task_id)
print(result_response)
task_status = result_response.task_status

time.sleep(2)
get_cnt += 1
1234567891011121314151617181920212223242526

運行輸出如下:

可以看到在得到大模型的響應輸出前,狀態一直是processing;知道大模型響應。

文生圖大模型API調用

Cogview是文生圖的大模型,直接復制的官方文檔的代碼:

from zhipuai import ZhipuAI
client = ZhipuAI(api_key="xxxxx") # 請填寫您自己的APIKey

response = client.images.generations(
model="cogview-3", #填寫需要調用的模型名稱
prompt="一只可愛的小貓咪",
)
print(response.data[0].url)

123456789

結果(0.25一張照片嗚嗚嗚嗚嗚嗚嗚)返回圖片url:https://sfile.chatglm.cn/testpath/b158178b-e00c-5ea0-92bb-f2962922b877\_0.png ??:

阿里云通義千問API調用過程

通義千問是阿里云開發的基于QWen模型的聊天模型,QWen模型是開源的。調用API同樣需要先獲取API_KEY——首先注冊阿里云的賬號,然后進入靈積平臺創建API-KEY:

之后查看通義千問的官方API調用文檔??快速入門,會話可以分為單輪會話和多輪會話:

單輪會話

可以通過message和prompt兩種方式調用API

import random
from http import HTTPStatus # 通義千問API是通過HTTP調用的
import dashscope

dashscope.api_key = 'xxxxx' # 設置自己申請的API_KEY; 這個方式設置有泄露api的可能

def call_with_messages():
prompt = input("user:")
messages = [{'role': 'system', 'content': 'You are a helpful assistant.'},
{'role': 'user', 'content': prompt}]
response = dashscope.Generation.call(
dashscope.Generation.Models.qwen_turbo, # 選擇模型
messages=messages,
# set the random seed, optional, default to 1234 if not set
seed=random.randint(1, 10000),
result_format='message', # set the result to be "message" format.
)
# 之后HTTPStatus為OK時,才是調用成功
if response.status_code == HTTPStatus.OK:
print(response)
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))

# For prerequisites running the following sample, visit https://help.aliyun.com/document_detail/611472.html

def call_with_prompt():
prompt = input("user:")
response = dashscope.Generation.call(
model=dashscope.Generation.Models.qwen_turbo, # 選擇模型
prompt=prompt
)
# The response status_code is HTTPStatus.OK indicate success,
# otherwise indicate request is failed, you can get error code
# and message from code and message.
if response.status_code == HTTPStatus.OK:
print(response.output) # The output text
print(response.usage) # The usage information
else:
print(response.code) # The error code.
print(response.message) # The error message.

if __name__ == '__main__':

call_with_messages()
print("\n")
call_with_prompt()

兩種方式的單輪會話輸出如下:

這里需要注意通過message和prompt調用,這兩種方式對應的輸出Json格式是不同的。

多輪會話

通過messages調用API,每輪會話用戶的問題(the content of user)和大模型的輸出(content of assistant)會存儲在messages這個列表中,之后的輸出會參考前面的內容,體現了大模型的記憶性!(可以在體驗中心,選擇多輪會話,注意觀察代碼中messages的變化):

觀察對應的代碼,每輪會話結束后,user的問題和模型的響應都會append在messages中:

from http import HTTPStatus
import dashscope
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role

dashscope.api_key = 'xxxxx' # 設置API_KEY

def conversation_with_messages():
messages = [{'role': Role.SYSTEM, 'content': 'You are a helpful assistant.'} ]
# 循環實現多輪會話
while True:
prompt = input("USER:")
# 添加新一輪會話用戶的問題
messages.append({'role': Role.USER, 'content': prompt})
response = Generation.call(
Generation.Models.qwen_turbo, #選擇響應的模型
messages=messages,
result_format='message', # set the result to be "message" format.
)
if response.status_code == HTTPStatus.OK:
print(response)
# 把模型的輸出添加到messages中
messages.append({'role': response.output.choices[0]['message']['role'],
'content': response.output.choices[0]['message']['content']})
else:
print('Request id: %s, Status code: %s, error code: %s, error message: %s' % (
response.request_id, response.status_code,
response.code, response.message
))
exit()

if __name__ == '__main__':
conversation_with_messages()
123456789101112131415161718192021222324252627282930313233

結果如下:

本文章轉載微信公眾號@佑佑有話說

上一篇:

基于云原生的低代碼能力:可視化微服務(API)編排

下一篇:

長文本大模型API服務kimi-free-api
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費