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 또는 표준 스트림 이벤트 |
인터페이스 요청 유형 | POST |
개발 언어 | http 요청을 시작할 수 있는 모든 개발 언어. |
요청 매개변수
매개 변수 이름 | 유형학 | 필수 필드 | 매개변수 설명 |
---|
모델 | 문자열 | be | 통화의 모델 인코딩입니다. 모델 코드: GLM-4V-플러스 , GLM-4V, GLM-4V-플래시(무료) |
메시지 | 목록 | be | 언어 모델을 호출하면 현재 대화 메시지 목록이 힌트로서 모델에 입력되며, 매개 변수를 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": "解释一下图中的现象" } ] } 가능한 메시지 유형에는 사용자 메시지, 어시스턴트 메시지가 있습니다. 아래의 메시지 메시지 필드 설명을 참조하세요. |
요청_ID | 문자열 | 막힘 | 사용자가 전달한 고유성을 보장해야 하며, 각 요청의 고유 ID를 구별하는 데 사용되며, 사용자가 전달하지 않으면 기본적으로 플랫폼이 생성됩니다. |
do_sample | 부울 | 막힘 | 샘플링 전략은 do_sample이 참이면 활성화되며, 샘플링 전략 temperature 및 top_p는 do_sample이 거짓이면 적용되지 않습니다. |
스트림 | 부울 | 막힘 | 동기식 호출을 사용하는 경우 이 매개 변수를 Fasle로 설정하거나 생략해야 합니다. True로 설정하면 모델은 모든 콘텐츠를 생성한 후 모든 콘텐츠를 한 번에 반환합니다. True로 설정하면 모델은 표준 이벤트 스트림에서 모델 생성 콘텐츠를 한 번에 한 블록씩 반환하고, 이벤트 스트림이 끝날 때data: [DONE] 메시지. |
온도 | Float | 막힘 | 샘플 온도는 출력의 무작위성을 제어하며 양수여야 합니다. 값의 범위는 다음과 같습니다:[0.0,1.0] 기본값은 0.8이며, 값이 클수록 출력은 더 무작위적이고 창의적이며, 값이 작을수록 출력은 더 안정적이거나 확실합니다. 적용 시나리오에 따라 값을 조정하는 것이 좋습니다. top_p 어쩌면 temperature 매개변수를 조정할 수 있지만 두 매개변수를 동시에 조정하지 마십시오. |
top_p | Float | 막힘 | 커널 샘플링이라고 하는 온도 샘플링의 또 다른 방법 값의 범위는 다음과 같습니다:[0.0, 1.0] 기본값은 0.6 모델에는 top_p 확률 질량 토큰 예를 들어 0.1은 모델 디코더가 이전 10%의 후보 확률 집합에 있는 토큰만 고려한다는 의미입니다. 애플리케이션 시나리오에 따라 모델을 조정하는 것이 좋습니다. top_p 어쩌면 temperature 매개변수를 조정할 수 있지만 두 매개변수를 동시에 조정하지 마십시오. |
최대_토큰 | 정수 | 막힘 | 최대 모델 출력 토큰 수, 기본값은 1024, 최대 지원 토큰 수는 1024개입니다. |
user_id | 문자열 | 막힘 | 최종 사용자의 위반, 불법적이고 바람직하지 않은 정보 생성 또는 기타 악의적인 행동에 플랫폼이 개입할 수 있도록 지원하는 최종 사용자의 고유 ID.ID 길이 요건: 최소 6자, 최대 128자. |
메시지 형식
모델에 허용되는 메시지 유형에는 사용자 메시지, 어시스턴트 메시지가 포함되며, 메시지 유형에 따라 형식이 달라집니다. 자세한 내용은 다음과 같습니다:
사용자 메시지
매개 변수 이름 | 유형학 | 필수 필드 | 매개변수 설명 |
---|
역할 | 문자열 | be | 메시지의 역할 정보는 다음과 같아야 합니다.user |
콘텐츠 | 목록 | be | 메시지 내용. |
유형 | 문자열 | be | 텍스트 유형: 텍스트 이미지 유형: image_url 동영상 유형: video_url 동영상과 이미지 유형은 동시에 입력할 수 없습니다. |
텍스트 | 문자열 | be | 유형이 텍스트인 경우 추가 정보 |
image_url | 개체 | be | 유형이 image_url인 경우 |
URL | 문자열 | be | 이미지 URL 또는 base64 인코딩. 이미지 업로드 제한은 이미지당 5M 미만, 6000*6000픽셀 이하입니다. jpg, png, jpeg 형식이 지원됩니다. 참고: GLM-4V-Flash는 base64 인코딩을 지원하지 않습니다. |
video_url | 개체 | be | 유형이 video_url인 경우, glm-4v-plus만 비디오 입력 비디오 이해 기능을 지원하는 경우 video_url 매개변수가 첫 번째 매개변수여야 합니다. |
URL | 문자열 | be | 동영상 URL. 동영상 크기는 최대 20M, 동영상 길이는 30초 이내로만 지원됩니다. 지원 동영상 유형은 MP4입니다. |
지원 메시지
매개 변수 이름 | 유형학 | 필수 필드 | 매개변수 설명 |
---|
역할 | 문자열 | be | 메시지의 역할 정보는 다음과 같아야 합니다.assistant |
콘텐츠 | 문자열 | be | 메시지 |
응답 매개변수
매개 변수 이름 | 유형학 | 매개변수 설명 |
---|
id | 문자열 | 작업 ID |
생성 | Long | 요청 생성 시간(초 단위의 유닉스 타임스탬프)입니다. |
모델 | 문자열 | 모델 이름 |
선택 사항 | 목록 | 현재 대화의 모델 출력 내용 |
색인 | 정수 | 결과 구독 |
finish_reason | 문자열 | 모델 추론이 종료되는 이유.stop 추론의 자연스러운 종료를 나타내거나 중지 단어를 트리거합니다.length 는 토큰 길이의 상한에 도달했음을 나타냅니다.sensitive 보안 감사 인터페이스에서 가로챈 모델 추론 콘텐츠를 나타냅니다.network_error 는 모델 추론 이상을 나타냅니다. |
메시지 | 개체 | 모델이 반환한 문자 메시지 |
역할 | 문자열 | 현재 대화 상자의 역할, 현재 기본값은 어시스턴트(모델)입니다. |
콘텐츠 | 목록 | 현재 대화의 내용 |
사용법 | 개체 | 프로세스가 끝날 때 이 모델 호출에 대한 토큰 수를 반환합니다. |
프롬프트_토큰 | 정수 | 사용자가 입력한 토큰 수 |
완료_토큰 | 정수 | 모델에서 출력되는 토큰 수 |
총_토큰 | 정수 | 총 토큰 |
콘텐츠_필터 | 목록 | 콘텐츠 보안에 대한 정보로 돌아가기 |
역할 | 문자열 | 다음을 포함한 보안 발효 링크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 | 문자열 | 작업 ID |
생성 | Long | 요청 생성 시간(초 단위의 유닉스 타임스탬프)입니다. |
선택 사항 | 목록 | 현재 대화의 모델 출력 내용 |
색인 | 정수 | 결과 구독 |
finish_reason | 문자열 | 모델 추론이 종료되는 이유.stop 추론의 자연스러운 종료를 나타내거나 중지 단어를 트리거합니다.length 는 토큰 길이의 상한에 도달했음을 나타냅니다.sensitive 보안 감사 인터페이스에서 가로챈 모델 추론 콘텐츠를 나타냅니다.network_error 는 모델 추론 이상을 나타냅니다. |
델타 | 개체 | 모델 증분으로 반환되는 문자 메시지 |
역할 | 문자열 | 현재 대화 상자의 역할, 현재 기본값은 어시스턴트(모델)입니다. |
콘텐츠 | 문자열 | 현재 대화의 내용 |
사용법 | 개체 | 이 모델에 의해 호출된 토큰 수에 대한 통계 |
프롬프트_토큰 | 정수 | 사용자가 입력한 토큰 수 |
완료_토큰 | 정수 | 모델에서 출력되는 토큰 수 |
총_토큰 | 정수 | 총 토큰 |
콘텐츠_필터 | 목록 | 콘텐츠 보안에 대한 정보로 돌아가기 |
역할 | 문자열 | 다음을 포함한 보안 발효 링크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}}