Серия GLM-4V
Серия GLM-4V состоит из 3 моделей для различных сценариев применения.
- GLM-4V-Plus: Обеспечивает превосходное мультимодальное восприятие, может обрабатывать до 5 изображений одновременно и поддерживает восприятие видеоконтента для сложных сценариев анализа мультимедиа.
- GLM-4V: Ориентированный на понимание содержания изображений, он способен анализировать до 5 изображений одновременно и подходит для случаев, когда требуется глубокое понимание изображений.
- GLM-4V-Flash (бесплатно): ориентирован на эффективное понимание одного изображения для сценариев с быстрым разрешением изображения, таких как анализ изображений в реальном времени или пакетная обработка изображений.
синхронный вызов
запрос интерфейса
типология | инструкции |
---|
метод передачи | https |
адрес запроса | https://open.bigmodel.cn/api/paas/v4/chat/completions |
метод вызова | Синхронный вызов, ожидающий завершения выполнения модели и возврата конечного результата, или вызов SSE |
кодировка символов | UTF-8 |
Формат запроса интерфейса | JSON |
формат ответа | JSON или стандартное событие потока |
Тип запроса интерфейса | ПОСТ |
язык развития | Любой язык разработки, который может инициировать http-запросы. |
параметр запроса
Имя параметра | типология | обязательное поле | Описание параметров |
---|
модель | Строка | быть | Кодировка модели вызова. Коды моделей: glm-4v-plus , glm-4v, glm-4v-flash (бесплатно) |
сообщения | Список | быть | При вызове языковой модели список текущих диалоговых сообщений вводится в модель в виде подсказок, передавая параметры в виде json-массивов. Например, параметр понимания видео:{ "role": "user", "content": [ { "type": "video_url", "video_url": { "url" : "https://xxx/xx.mp4" } }, { "type": "text", "text": "请仔细描述这个视频" } ] } Параметры понимания картинок:{ "role": "user", "content": [ { "type": "image_url", "image_url": { "url" : "https://xxx/xx.jpg" } }, { "type": "text", "text": "解释一下图中的现象" } ] } Возможные типы сообщений: сообщение пользователя, сообщение помощника. см. описание полей сообщений ниже. |
идентификатор запроса | Строка | Засорение | Передается пользователем, необходимо обеспечить уникальность; используется для различения уникальной идентичности каждого запроса, если пользователь не передает платформу, будет сгенерирован по умолчанию. |
сделать_образец | Булево | Засорение | Стратегия выборки включена, если значение do_sample равно true, а стратегии выборки temperature и top_p не будут действовать, если значение do_sample равно false. |
поток | Булево | Засорение | Этот параметр должен быть установлен в Fasle или опущен при использовании синхронных вызовов. Если установлено значение True, модель вернет все содержимое сразу после генерации всего содержимого. Если установлено значение True, модель будет возвращать сгенерированный контент в стандартном потоке событий, по одному блоку за раз, а в конце потока событий будет возвращено сообщениеdata: [DONE] Сообщение. |
температура | Поплавок | Засорение | Температура образца, контролирует случайность выхода, должна быть положительной Диапазон значений:[0.0,1.0] Значение по умолчанию - 0,8. Чем больше значение, тем более случайным и нестандартным будет выход; чем меньше значение, тем более стабильным или определенным будет выход. Рекомендуется настроить значение в соответствии со сценарием применения. top_p возможно temperature параметр, но не настраивайте оба параметра одновременно |
top_p | Поплавок | Засорение | Другой метод выборки с помощью температуры, называемый выборкой ядра Диапазон значений составляет:[0.0, 1.0] Значение по умолчанию - 0,6 Модели считаются имеющими top_p масса вероятности жетоны Например, 0,1 означает, что модель декодера учитывает только лексемы из набора вероятностей-кандидатов из бывшего 10%. Рекомендуется настроить модель в соответствии с вашим сценарием применения. top_p возможно temperature параметр, но не настраивайте оба параметра одновременно |
max_tokens | Целое число | Засорение | Максимальное количество выходных токенов модели, по умолчанию 1024, максимальная поддержка 1024токенов. |
идентификатор пользователя | Строка | Засорение | Уникальный идентификатор конечного пользователя, помогающий платформе принимать меры в случае нарушений со стороны конечного пользователя, создания незаконной и нежелательной информации или другого неправомерного поведения.Требования к длине идентификатора: минимум 6 символов, максимум 128 символов. |
Формат сообщений
Допустимые типы сообщений для модели включают сообщение пользователя, сообщение помощника, а формат для разных типов сообщений различается. Подробности приведены ниже:
Сообщение пользователя
Имя параметра | типология | обязательное поле | Описание параметров |
---|
роль | Строка | быть | Информация о роли для сообщения должна быть следующейuser |
содержание | Список | быть | Содержание сообщения. |
тип | Строка | быть | Тип текста: text Тип изображения: image_url Тип видео: video_url Типы видео и изображения не могут быть введены одновременно |
текст | Строка | быть | Дополнительно, если тип - текст |
image_url | Объект | быть | Если тип - image_url, добавьте |
url | Строка | быть | url изображения или кодировка base64. Ограничение на размер загружаемого изображения - не более 5М на одно изображение и не более 6000*6000 пикселей. Поддерживаются форматы jpg, png, jpeg. Примечание: GLM-4V-Flash не поддерживает кодировку base64. |
video_url | Объект | быть | Если тип - video_url, параметр video_url должен быть первым, если только glm-4v-plus поддерживает восприятие входного видеосигнала. |
url | Строка | быть | Видео url. размер видео поддерживается только до 20M, продолжительность видео не более 30s. поддерживаемый тип видео mp4. |
Сообщение помощника
Имя параметра | типология | обязательное поле | Описание параметров |
---|
роль | Строка | быть | Информация о роли для сообщения должна быть следующейassistant |
содержание | Строка | быть | Сообщение |
Параметры реагирования
Имя параметра | типология | Описание параметров |
---|
id | Строка | Идентификатор задачи |
создан | Длинный | Время создания запроса, которое представляет собой временную метку Unix в секундах. |
модель | Строка | Название модели |
выбор | Список | Содержание выходных данных модели для текущего диалога |
индекс | Целое число | Подскрипты результатов |
причина окончания | Строка | Причины прекращения рассуждений о моделях.stop Представляет собой естественный конец рассуждения или запускает стоп-слово.length означает достижение верхнего предела длины лексем.sensitive Представляет содержимое выводов модели, перехваченное интерфейсом аудита безопасности.network_error представляет собой аномалии в выводах модели. |
сообщение | Объект | Текстовое сообщение, возвращаемое моделью |
роль | Строка | Роль текущего диалога, в настоящее время по умолчанию - помощник (модель) |
содержание | Список | Содержание текущего диалога |
использование | Объект | Возвращает подсчет количества токенов для данного вызова модели в конце процесса. |
prompt_tokens | Целое число | Количество жетонов, введенных пользователем |
токены завершения | Целое число | Количество лексем, выведенных моделью |
total_tokens | Целое число | Всего токенов |
content_filter | Список | Вернуться к информации о безопасности контента |
роль | Строка | Связи вступления в силу по вопросам безопасности, включаяrole = assistant моделирование рассуждений.role = user пользовательский ввод.role = history исторический контекст |
уровень | Целое число | Уровень тяжести 0-3, при этом 0 - самый тяжелый, а 3 - наименее тяжелый. |
Пример запроса
Загрузите URL-адрес видео
#视频理解示例、上传视频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)
Загрузка видео 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)
Загрузить URL-адрес изображения
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)
Загрузка изображения 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)
Несколько раундов диалогов с картинками
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)
Образец ответа
{
"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
}
}
потоковый вывод
Параметры реагирования
Имя параметра | типология | Описание параметров |
---|
id | Строка | Идентификатор задачи |
создан | Длинный | Время создания запроса, которое представляет собой временную метку Unix в секундах. |
выбор | Список | Содержание выходных данных модели для текущего диалога |
индекс | Целое число | Подскрипты результатов |
причина окончания | Строка | Причины прекращения рассуждений о моделях.stop Представляет собой естественный конец рассуждения или запускает стоп-слово.length означает достижение верхнего предела длины лексем.sensitive Представляет содержимое выводов модели, перехваченное интерфейсом аудита безопасности.network_error представляет собой аномалии в выводах модели. |
дельта | Объект | Текстовое сообщение, возвращаемое инкрементом модели |
роль | Строка | Роль текущего диалога, в настоящее время по умолчанию - помощник (модель) |
содержание | Строка | Содержание текущего диалога |
использование | Объект | Статистика по количеству токенов, вызванных этой моделью |
prompt_tokens | Целое число | Количество жетонов, введенных пользователем |
токены завершения | Целое число | Количество лексем, выведенных моделью |
total_tokens | Целое число | Всего токенов |
content_filter | Список | Вернуться к информации о безопасности контента |
роль | Строка | Связи вступления в силу по вопросам безопасности, включаяrole = assistant моделирование рассуждений.role = user пользовательский ввод.role = history исторический контекст |
уровень | Целое число | Уровень тяжести 0-3, при этом 0 - самый тяжелый, а 3 - наименее тяжелый. |
Пример запроса
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)
Образец ответа
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}}