Série GLM-4V
A série GLM-4V consiste em três modelos para diferentes cenários de aplicação.
- GLM-4V-Plus: oferece excelente compreensão multimodal, pode processar até 5 imagens simultaneamente e suporta a compreensão de conteúdo de vídeo para cenários complexos de análise multimídia.
- GLM-4V: com foco na compreensão do conteúdo da imagem, ele é capaz de analisar até 5 imagens simultaneamente e é adequado para ocasiões em que é necessária uma compreensão profunda da imagem.
- GLM-4V-Flash (gratuito): concentra-se na compreensão eficiente de uma única imagem para cenários com resolução rápida de imagens, como análise de imagens em tempo real ou processamento de imagens em lote.
chamada síncrona
solicitação de interface
tipologia |
instruções |
método de transmissão |
https |
endereço de solicitação |
https://open.bigmodel.cn/api/paas/v4/chat/completions |
método de invocação |
Chamada síncrona, aguardando que o modelo termine a execução e retorne o resultado final ou chamada SSE |
codificação de caracteres |
UTF-8 |
Formato de solicitação de interface |
JSON |
formato de resposta |
JSON ou evento de fluxo padrão |
Tipo de solicitação de interface |
POST |
desenvolvimento da linguagem |
Qualquer linguagem de desenvolvimento que possa iniciar solicitações http. |
parâmetro de solicitação
Nome do parâmetro |
tipologia |
campo obrigatório |
Descrição do parâmetro |
modelo |
Cordas |
ser |
A codificação do modelo da chamada. Códigos de modelo: glm-4v-plus , glm-4v, glm-4v-flash (gratuito) |
mensagens |
Lista |
ser |
Quando o modelo de linguagem é chamado, uma lista de mensagens de diálogo atuais é inserida no modelo como dicas, passando parâmetros na forma de matrizes json. Por exemplo, o parâmetro de compreensão de vídeo:{ "role": "user", "content": [ { "type": "video_url", "video_url": { "url" : "https://xxx/xx.mp4" } }, { "type": "text", "text": "请仔细描述这个视频" } ] } Parâmetros de compreensão de imagens:{ "role": "user", "content": [ { "type": "image_url", "image_url": { "url" : "https://xxx/xx.jpg" } }, { "type": "text", "text": "解释一下图中的现象" } ] } Os tipos de mensagem possíveis incluem Mensagem do usuário, Mensagem do assistente. Consulte as descrições dos campos de mensagem abaixo. |
request_id |
Cordas |
entupido |
Passado pelo usuário, é necessário garantir a exclusividade; usado para distinguir entre a identidade exclusiva de cada solicitação, o usuário não passa a plataforma será gerada por padrão. |
do_sample |
Booleano |
entupido |
A estratégia de amostragem é ativada quando do_sample é true, e as estratégias de amostragem temperature e top_p não terão efeito quando do_sample for false. |
fluxo |
Booleano |
entupido |
Esse parâmetro deve ser definido como Fasle ou omitido ao usar chamadas síncronas. Se definido como True, o modelo retornará todo o conteúdo de uma só vez depois de gerar todo o conteúdo. Se for definido como True, o modelo retornará o conteúdo gerado pelo modelo em um Event Stream padrão, um bloco de cada vez e, no final do Event Stream, ele retornará umdata: [DONE] Mensagem. |
temperatura |
Flutuação |
entupido |
Temperatura da amostra, controle da aleatoriedade da saída, deve ser positiva O intervalo de valores é:[0.0,1.0] O valor padrão é 0,8; quanto maior o valor, mais aleatória e criativa será a saída; quanto menor o valor, mais estável ou certa será a saída. Recomenda-se ajustar o valor de acordo com o cenário do aplicativo. top_p talvez temperature mas não ajuste os dois parâmetros ao mesmo tempo |
top_p |
Flutuação |
entupido |
Outro método de amostragem com temperatura, chamado de amostragem de kernel O intervalo de valores é:[0.0, 1.0] O valor padrão é 0,6. Os modelos são considerados como tendo um top_p massa de probabilidade tokens Por exemplo, 0,1 significa que o decodificador de modelo considera apenas tokens do conjunto candidato de probabilidades do antigo 10%. Recomenda-se que você ajuste o modelo de acordo com o cenário do seu aplicativo. top_p talvez temperature mas não ajuste os dois parâmetros ao mesmo tempo |
max_tokens |
Inteiro |
entupido |
Máximo de tokens de saída do modelo, o padrão é 1024, suporte máximo de 1024 tokens. |
user_id |
Cordas |
entupido |
Uma ID exclusiva para o usuário final para ajudar a plataforma a intervir em violações do usuário final, geração de informações ilegais e indesejáveis ou outros comportamentos abusivos. |
Formato das mensagens
Os tipos de mensagem aceitáveis para o modelo incluem Mensagem do usuário, Mensagem do assistente, e o formato varia para diferentes tipos de mensagem. Os detalhes são os seguintes:
Mensagem do usuário
Nome do parâmetro |
tipologia |
campo obrigatório |
Descrição do parâmetro |
função |
Cordas |
ser |
As informações de função da mensagem devem seruser |
conteúdo |
Lista |
ser |
Conteúdo da mensagem. |
tipo |
Cordas |
ser |
Tipo de texto: text Tipo de imagem: image_url Tipo de vídeo: video_url Os tipos de vídeo e imagem não podem ser inseridos ao mesmo tempo |
texto |
Cordas |
ser |
Suplementar quando o tipo é texto |
image_url |
Objeto |
ser |
Quando o tipo for image_url, adicione |
url |
Cordas |
ser |
URL da imagem ou codificação base64. O limite de upload de imagens é de menos de 5 milhões por imagem e não mais de 6000*6000 pixels. São aceitos os formatos jpg, png e jpeg. Observação: o GLM-4V-Flash não é compatível com a codificação base64. |
video_url |
Objeto |
ser |
Quando o tipo for video_url, o parâmetro video_url deverá ser o primeiro quando somente o glm-4v-plus for compatível com a compreensão de vídeo de entrada de vídeo. |
url |
Cordas |
ser |
URL do vídeo. O tamanho do vídeo só é compatível com até 20M, a duração do vídeo não é superior a 30s. Tipo de vídeo compatível mp4. |
Mensagem do assistente
Nome do parâmetro |
tipologia |
campo obrigatório |
Descrição do parâmetro |
função |
Cordas |
ser |
As informações de função da mensagem devem serassistant |
conteúdo |
Cordas |
ser |
Mensagem |
Parâmetros de resposta
Nome do parâmetro |
tipologia |
Descrição do parâmetro |
id |
Cordas |
ID da tarefa |
criado |
Longo |
A hora de criação da solicitação, que é um registro de data e hora Unix em segundos. |
modelo |
Cordas |
Nome do modelo |
opções |
Lista |
Conteúdo de saída do modelo do diálogo atual |
índice |
Inteiro |
Subscritos de resultados |
finish_reason |
Cordas |
Motivos para o término do raciocínio do modelo.stop Representa o fim natural do raciocínio ou aciona uma palavra de parada.length representa o alcance do limite superior do comprimento dos tokens.sensitive Representa o conteúdo de inferência de modelo interceptado pela interface de auditoria de segurança.network_error representa as anomalias de inferência do modelo. |
mensagem |
Objeto |
Mensagem de texto retornada pelo modelo |
função |
Cordas |
A função do diálogo atual, atualmente padronizada como assistente (modelo) |
conteúdo |
Lista |
Conteúdo do diálogo atual |
uso |
Objeto |
Retorna uma contagem do número de tokens para essa chamada de modelo no final do processo. |
prompt_tokens |
Inteiro |
Número de tokens inseridos pelo usuário |
completion_tokens |
Inteiro |
Número de tokens produzidos pelo modelo |
total_tokens |
Inteiro |
Total de tokens |
filtro_de_conteúdo |
Lista |
Voltar para informações sobre segurança de conteúdo |
função |
Cordas |
Links para entrada em vigor da segurança, incluindorole = assistant raciocínio de modelagem.role = user entrada do usuário.role = history contexto histórico |
nível |
Inteiro |
Nível de gravidade de 0 a 3, sendo o nível 0 o mais grave e o 3 o menos grave. |
Exemplo de uma solicitação
Carregar URL do vídeo
#视频理解示例、上传视频URL
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="YOUR API KEY") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url" : "https://sfile.chatglm.cn/testpath/video/xxxxx.mp4"
}
},
{
"type": "text",
"text": "请仔细描述这个视频"
}
]
}
]
)
print(response.choices[0].message)
Carregar vídeo Base64
import base64
from zhipuai import ZhipuAI
video_path = "/Users/YourCompluter/xxxx.mp4"
with open(video_path, 'rb') as video_file:
video_base = base64.b64encode(video_file.read()).decode('utf-8')
client = ZhipuAI(api_key="YOUR API KEY") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url" : video_base
}
},
{
"type": "text",
"text": "请仔细描述这个视频"
}
]
}
]
)
print(response.choices[0].message)
Carregar URL da imagem
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "text",
"text": "图里有什么"
},
{
"type": "image_url",
"image_url": {
"url" : "https://img1.baidu.com/it/u=1369931113,3388870256&fm=253&app=138&size=w931&n=0&f=JPEG&fmt=auto?sec=1703696400&t=f3028c7a1dca43a080aeb8239f09cc2f"
}
}
]
}
]
)
print(response.choices[0].message)
Carregar imagem Base64
import base64
from zhipuai import ZhipuAI
img_path = "/Users/YourCompluter/xxxx.jpeg"
with open(img_path, 'rb') as img_file:
img_base = base64.b64encode(img_file.read()).decode('utf-8')
client = ZhipuAI(api_key="YOUR API KEY") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": img_base
}
},
{
"type": "text",
"text": "请描述这个图片"
}
]
}
]
)
print(response.choices[0].message)
Várias rodadas de diálogos com imagens
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="YOUR API KEY") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxx.png"
},
"type": "image_url"
},
{
"text": "图中有什么",
"type": "text"
}
],
"role": "user"
},
{
"content": [
{
"text": "这是一幅描绘自然风景的画,展现了一片宁静的湖泊,湖水呈现出深浅不一的蓝绿色调。湖边长着一棵盛开的樱花树,粉白色的花朵在阳光下显得格外鲜艳。树下有一位身穿蓝色衣服的人坐在船上,似乎正在享受这美好的时光。\n\n背景是连绵起伏的山脉,山体被绿色的植被覆盖,山顶则被云雾缭绕,增添了几分神秘感。远处还可以看到一座小亭子,它坐落在湖边的岩石上,与周围的自然环境和谐相融。\n\n整个画面给人一种宁静、和谐的感觉,仿佛置身于一个世外桃源之中。",
"type": "text"
}
],
"role": "assistant"
},
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxxx.jpeg"
},
"type": "image_url"
},
{
"text": "这个图与上面图有什么不一样",
"type": "text"
}
],
"role": "user"
},
{
"content": [
{
"text": "第一张图和第二张图在画面内容、构图、色彩等方面都有很大的不同,形成鲜明的对比。\n\n1.第一张图是风景画,主要描绘了自然风景,如樱花树、湖泊、山脉等,色彩丰富,充满春天的气息,而第二张图是描绘长城在冬季的风景照片,长城在白雪覆盖的山脉中蜿蜒盘旋,整体色调偏冷,给人一种寒冷、宁静的感觉。\n\n2.构图上,第一张图采用对称式构图,以樱花树为中心,两侧的景物相互呼应,形成平衡和谐的画面效果,第二张图则采用对角线构图,长城作为视觉引导线,引导观众的视线穿越整个画面,增加画面的深度和动态感。\n\n整体来看,这两张图在画面内容、色彩、构图和氛围上都呈现出明显的对比,一张是充满生机和色彩的春日风景画,另一张是宁静而神秘的冬日长城风景照。",
"type": "text"
}
],
"role": "assistant"
},
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxxx.jpeg"
},
"type": "image_url"
},
{
"text": "这个图与上一张图有什么区别",
"type": "text"
}
],
"role": "user"
}
]
)
print(response.choices[0].message)
Exemplo de resposta
{
"created": 1703487403,
"id": "8239375684858666781",
"model": "glm-4v-plus",
"request_id": "8239375684858666781",
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "图中有一片蓝色的海和蓝天,天空中有白色的云朵。图片的右下角有一个小岛或者岩石,上面长着深绿色的树木。",
"role": "assistant"
}
}
],
"usage": {
"completion_tokens": 37,
"prompt_tokens": 1037,
"total_tokens": 1074
}
}
saída de streaming
Parâmetros de resposta
Nome do parâmetro |
tipologia |
Descrição do parâmetro |
id |
Cordas |
ID da tarefa |
criado |
Longo |
A hora de criação da solicitação, que é um registro de data e hora Unix em segundos. |
opções |
Lista |
Conteúdo de saída do modelo do diálogo atual |
índice |
Inteiro |
Subscritos de resultados |
finish_reason |
Cordas |
Motivos para o término do raciocínio do modelo.stop Representa o fim natural do raciocínio ou aciona uma palavra de parada.length representa o alcance do limite superior do comprimento dos tokens.sensitive Representa o conteúdo de inferência de modelo interceptado pela interface de auditoria de segurança.network_error representa as anomalias de inferência do modelo. |
delta |
Objeto |
Mensagem de texto retornada pelo incremento do modelo |
função |
Cordas |
A função do diálogo atual, atualmente padronizada como assistente (modelo) |
conteúdo |
Cordas |
Conteúdo do diálogo atual |
uso |
Objeto |
Estatísticas sobre o número de tokens chamados por esse modelo |
prompt_tokens |
Inteiro |
Número de tokens inseridos pelo usuário |
completion_tokens |
Inteiro |
Número de tokens produzidos pelo modelo |
total_tokens |
Inteiro |
Total de tokens |
filtro_de_conteúdo |
Lista |
Voltar para informações sobre segurança de conteúdo |
função |
Cordas |
Links para entrada em vigor da segurança, incluindorole = assistant raciocínio de modelagem.role = user entrada do usuário.role = history contexto histórico |
nível |
Inteiro |
Nível de gravidade de 0 a 3, sendo o nível 0 o mais grave e o 3 o menos grave. |
Exemplo de uma solicitação
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="") # 请填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url" : "sfile.chatglm.cn/testpath/xxxx.jpg"
}
},
{
"type": "text",
"text": "图里有什么"
}
]
},
],
stream=True,
)
for chunk in response:
print(chunk.choices[0].delta)
Exemplo de resposta
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"delta":{"role":"assistant","content":"下"}}]}
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"delta":{"role":"assistant","content":"角"}}]}
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"delta":{"role":"assistant","content":"有一个"}}]}
... ...
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"delta":{"role":"assistant","content":"树木"}}]}
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"delta":{"role":"assistant","content":"。"}}]}
data: {"id":"8305986882425703351","created":1705476637,"model":"glm-4v-plus","choices":[{"index":0,"finish_reason":"stop","delta":{"role":"assistant","content":""}}],"usage":{"prompt_tokens":1037,"completion_tokens":37,"total_tokens":1074}}