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": "Please describe this video carefully" } ] } Parâmetros de compreensão de imagens:{ "role": "user", "content": [ { "type": "image_url", "image_url": { "url" : "https://xxx/xx.jpg" } }, { "type": "text", "text": "Explain the phenomenon in the picture" } ] } 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á umdados: [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 temperatura 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 temperatura 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 serusuário |
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 serassistente |
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.parar Representa o fim natural do raciocínio ou aciona uma palavra de parada.comprimento representa o alcance do limite superior do comprimento dos tokens.sensível 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, incluindofunção = assistente raciocínio de modelagem.função = usuário entrada do usuário.função = histórico 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
Exemplo de compreensão de vídeo #, upload de URLs de vídeo
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="YOUR API KEY") # Preencha sua própria APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # Preencha o nome do modelo a ser chamado
messages=[
{
"role": "user", "content": [ {
"content": [
{
"type": "video_url", "content": [ { "type": "user", "content": {
"video_url": {
"url" : "https://sfile.chatglm.cn/testpath/video/xxxxx.mp4"
}
},
{
"type": "text".
"text": "Please describe this video carefully" (Descreva este vídeo cuidadosamente)
}
]
}
]
)
print(response.choices[0].message)
Carregar vídeo Base64
importar base64
from zhipuai import ZhipuAI
video_path = "/Usuários/SeuComputador/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") # complete sua própria APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # Preencha o nome do modelo a ser chamado
messages=[
{
"role": "user", "content": [ {
"content": [
{
"type": "video_url", "content": [ { "type": "user", "content": {
"video_url": {
"url" : video_base
}
},
{
"type": "text", "text": "Please describe this video carefully", {
"text": "Por favor, descreva este vídeo cuidadosamente"
}
]
}
]
)
print(response.choices[0].message)
Carregar URL da imagem
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="") # Preencha sua própria APIKey
response = client.chat.completions.create(
model="glm-4v", # Preencha o nome do modelo que precisa ser chamado.
messages=[
{
"role": "user", "content": [ {
"content": [
{
"type": "text", "text": "What's in the picture", "text": "What's in the picture", "text": "What's in the picture
"text": "What's in the picture" (O que há na imagem)
},
{
"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
importar base64
from zhipuai import ZhipuAI
img_path = "/Usuários/SeuComputador/xxxx.jpeg"
with open(img_path, 'rb') as img_file: img_base = base64.
img_base = base64.b64encode(img_file.read()).decode('utf-8')
client = ZhipuAI(api_key="YOUR API KEY") # complete sua própria APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # Preencha o nome do modelo a ser chamado
messages=[
{
"role": "user", "content": [ {
"content": [
{
"type": "image_url",
"image_url": {
"url": img_base
}
},
{
"type": "text", "text": "Please describe this image" (Descreva esta imagem), {
"text": "Por favor, descreva esta imagem"
}
]
}
]
)
print(response.choices[0].message)
Várias rodadas de diálogos com imagens
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="YOUR API KEY") # Preencha sua própria APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # Preencha o nome do modelo a ser chamado
messages=[
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxx.png"
},
"type": "image_url"
},
{
"text": "What's in the picture" (O que há na imagem),
"type": "text"
}
], { "role": "user" (função: "usuário").
"role": "user" (função: "usuário")
},
{
"content": [
{
"text": "Esta é uma pintura que retrata uma paisagem natural, mostrando um lago tranquilo com água em vários tons de azul-esverdeado. Uma cerejeira em flor cresce perto do lago e suas flores branco-rosadas parecem vibrantes à luz do sol. Sob a árvore, há um homem vestido de azul sentado em um barco, aparentemente aproveitando o momento. Ao fundo, há colinas onduladas cobertas de vegetação verde, enquanto os topos das colinas estão cercados por nuvens, adicionando uma sensação de mistério. Um pequeno pavilhão também pode ser visto à distância, que fica em um afloramento rochoso próximo ao lago, harmonizando-se com o ambiente natural ao redor. \n\nA imagem inteira dá uma sensação de tranquilidade e harmonia, como se estivéssemos em um paraíso." ,
"type": "text"
}
],
"role": "assistant"
}, { "role": "assistant".
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxxx.jpeg"
},
"type": "image_url"
},
{
"text": "Como essa imagem é diferente da imagem acima?",
"type": "text"
}
], { "role": "user" (função: "usuário").
"role": "user"
},
{
"content": [
{
"text": "A primeira imagem e a segunda imagem são muito diferentes em termos de conteúdo, composição e cor da imagem, formando um forte contraste. \A primeira foto é uma foto de paisagem, retratando principalmente cenários naturais, como cerejeiras em flor, lagos e montanhas etc. É rica em cores e cheia de primavera, enquanto a segunda foto é uma foto de paisagem retratando a Grande Muralha no inverno, com a Grande Muralha serpenteando pelas montanhas cobertas de neve, e o tom geral da foto é mais frio, dando uma sensação de frieza e serenidade. \n\. Em termos de composição, a primeira imagem adota uma composição simétrica, com a cerejeira em flor no centro e o cenário em ambos os lados ecoando um ao outro para formar um efeito de imagem equilibrado e harmonioso, enquanto a segunda imagem adota uma composição diagonal, com a Grande Muralha atuando como uma linha guia visual para conduzir os olhos do espectador por toda a imagem, aumentando a profundidade e o dinamismo da imagem. \No geral, essas duas imagens mostram um claro contraste em termos de conteúdo, cor, composição e atmosfera, sendo uma delas uma paisagem de primavera cheia de vida e cor, e a outra uma serena e misteriosa paisagem de inverno tirada da Grande Muralha." ,
"type": "text"
}
],.
"role": "assistant"
}, { "role": "assistant".
{
"content": [
{
"image_url": {
"url": "https://cdn.bigmodel.cn/xxxxxxx.jpeg"
},
"type": "image_url"
},
{
"text": "Qual é a diferença entre esta imagem e a anterior.", {
"type": "text"
}
], { "role": "user" (função: "usuário").
"role": "user"
}
]
)
print(response.choices[0].message)
Exemplo de resposta
{
"created": 1703487403,
"id": "8239375684858666781",
"model": "glm-4v-plus",
"request_id": "8239375684858666781", "choices": [ { created": 1703487403
"choices": [
{
"finish_reason": "stop",
"message": {
"content": "A imagem tem um mar azul e um céu azul com nuvens brancas no céu. No canto inferior direito da imagem, há uma ilha ou rocha com árvores verde-escuras crescendo nela." ,
"role": "assistant"
}
}
],.
"usage": {
"completion_tokens": 37, "prompt_tokens": 1037, {
"prompt_tokens": 1037, "total_tokens": 1074, "prompt_tokens": 1074
"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.parar Representa o fim natural do raciocínio ou aciona uma palavra de parada.comprimento representa o alcance do limite superior do comprimento dos tokens.sensível 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, incluindofunção = assistente raciocínio de modelagem.função = usuário entrada do usuário.função = histórico 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="") # Preencha sua própria APIKey
response = client.chat.completions.create(
model="glm-4v-plus", # Preencha o nome do modelo a ser chamado.
messages=[
{
"role": "user", "content": [ {
"content": [
{
"type": "image_url",
"image_url": {
"url" : "sfile.chatglm.co.uk/testpath/xxxx.jpg"
}
},
{
"type": "text", {
"text": "What's in the picture" (O que há na imagem)
}
]
}
],
stream=True, )
)
for chunk in response.
print(chunk.choices[0].delta)
Exemplo de resposta
dados: {"id": "8305986882425703351", "created":1705476637, "model": "glm-4v-plus", "choices":[{"index":0, "delta":{"role": "assistant", " content": "next"}}]}
data: {"id": "8305986882425703351", "created":1705476637, "model": "glm-4v-plus", "choices":[{"index":0, "delta":{"role": "assistant"," content": "corner"}}]}
data: {"id": "8305986882425703351", "created":1705476637, "model": "glm-4v-plus", "choices":[{"index":0, "delta":{"role": "assistant"," content": "There is one"}}]}
... ...
dados: {"id": "8305986882425703351", "created":1705476637, "model": "glm-4v-plus", "choices":[{"index":0, "delta":{"role": "assistant", " content": "trees"}}]}
dados: {"id": "8305986882425703351", "created":1705476637, "model": "glm-4v-plus", "choices":[{"index":0, "delta":{"role": "assistant"," content":"."}}]}
dados: {"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}}