모델

Qwen2 VL 72B Instruct

Markdown · JSON

Qwen2 VL 72B Instruct

Qwen2-VL-72B-Instruct는 텍스트, 이미지, 동영상을 결합해 시각적 질문, 문서 읽기, 이미지 속 다국어 텍스트를 다룹니다. 제작사는 20분이 넘는 동영상 이해, 동적 이미지 해상도, 시각 에이전트 통합을 설명하며, 답변은 텍스트입니다.

모델 소개

이 설명은 모델의 기능을 다룹니다. Ailoot에서 사용할 수 있는 입력, 출력 및 옵션은 아래에 선택한 메서드별로 표시됩니다.

Qwen2-VL-72B-Instruct는 Qwen2를 기반으로 만들어진 지시 튜닝 72B 비전 언어 에디션입니다. 이미지나 동영상과 함께 텍스트를 입력받아 텍스트 답변을 생성합니다. 제작사는 다양한 해상도와 종횡비의 이미지 이해, 이미지 속 텍스트 해석, 눈에 보이는 관계에 대한 추론, 20분이 넘는 동영상에 관한 질문에 답하는 기능을 강조합니다.

이미지와 동영상 기능

문서 페이지에서는 필요한 구체적인 내용을 요청하세요. 문단, 표의 행, 수식, 진술에 붙은 조건 등이 될 수 있습니다. 페이지를 읽을 수 있게 유지하고, 결과가 문구를 전사해야 하는지, 요약해야 하는지, 의미를 설명해야 하는지 밝히세요. 유용한 문서 출력은 추출 내용 옆에 원래 섹션 라벨을 유지할 수 있습니다. 도식에서는 라벨이 붙은 요소가 어떻게 연결되는지 묻고 설명이 필요한 관계를 지정하세요.

문서에 명시된 동영상 사용에는 눈에 보이는 시퀀스에 기반한 질문, 대화, 글로 된 콘텐츠가 포함됩니다. 객체가 언제 나타나는지, 특정 단계 전에 무엇이 일어나는지, 시연된 동작이 글로 된 절차와 어떤 관계인지 등 검토할 사건이나 변화를 정하세요. 순서대로 된 사건 설명이나 보이는 단계와 제공한 절차의 비교를 요청하세요. 제작사의 20분을 넘는다는 설명은 긴 동영상 이해에 관한 것입니다. 고정된 최대 동영상 길이나, 모든 원본 클립이 변경하지 않은 입력 설정에 들어간다는 보장이 아닙니다.

시각 에이전트 활용

릴리스는 Qwen2-VL을 모바일 기기, 로봇, 다른 도구에 연결된 시각 에이전트용으로도 소개합니다. 발표는 도식에서 코드를 생성하거나 시각적 질문으로 외부 조회를 요청하는 등 함수 호출 및 코드 인터프리터 시나리오를 설명합니다. 모델을 사용하는 애플리케이션이 이러한 도구를 제공하고, 제안된 동작을 실행한 뒤 결과를 반환합니다. 모델의 텍스트 응답만으로는 조작 요소를 클릭하거나, 기기를 움직이거나, 생성된 프로그램을 실행하지 않습니다.

실용적인 인터페이스 작업에서는 스크린샷과 사용자의 목표를 제공한 뒤, 다음 단계와 관련된 보이는 조작 요소와 그 선택을 뒷받침하는 증거를 요청할 수 있습니다. 관찰, 제안된 동작, 실제 실행을 작업 흐름의 별도 부분으로 유지하세요. 이를 통해 시각 에이전트에 초점을 맞추면서 애플리케이션이 작업할 수 있을 만큼 구체적인 결과를 요청할 수 있습니다.

이미지 속 다국어 텍스트

제작사는 영어와 중국어, 대부분의 유럽 언어, 일본어·한국어·아랍어·베트남어 등을 포함한 언어의 이미지 속 텍스트 인식을 설명합니다. 따라서 다국어 페이지도 시각적 읽기 작업으로 다룰 수 있습니다. 정확한 문구가 중요하다면 원래 전사를 먼저 요청한 뒤, 선택한 언어로 번역이나 설명을 요청하세요. 지정되지 않은 재작성과 인식을 섞기보다 라벨과 숫자를 유지하세요.

동적 해상도와 위치 정보

Qwen2-VL은 비전 인코더와 Qwen2 언어 모델을 결합합니다. Naive Dynamic Resolution은 다양한 이미지 크기를 서로 다른 시각 토큰 수에 대응시킵니다. Multimodal Rotary Position Embedding은 위치 정보를 분리하여 텍스트 순서, 2차원 이미지, 동영상의 시간·공간 구조를 표현할 수 있도록 합니다. 이 기능은 같은 계열이 페이지, 여러 이미지, 동영상 시퀀스를 처리하는 방식을 설명합니다.

모델 카드의 이미지 프로세서는 이미지당 기본 범위로 시각 토큰 4부터 16,384까지를 명시합니다. 애플리케이션은 종횡비를 유지하면서 최소·최대 픽셀을 조정하거나, 28의 배수로 반올림되는 크기를 요청할 수 있습니다. 예시 범위인 256부터 1,280토큰까지는 설정 가능한 설명 예시이며, 별도의 보편적인 이미지 제한이 아닙니다. 이미지 디테일이 많아지면 더 많은 계산과 시각 토큰이 사용되므로, 이미지를 준비할 때 질문에 필요한 라벨, 머리글, 작은 객체를 유지하세요.

입력 준비와 컨텍스트

제작사는 단일 이미지, 여러 이미지, 프레임 시퀀스나 로컬 파일로 제공하는 동영상, 배치 대화를 예시로 보여 줍니다. 이미지 준비에는 로컬 파일, 인코딩된 이미지 데이터, 이미지 참조가 포함됩니다. 카드의 동영상 예시는 선택한 프레임률을 사용하며, 모든 동영상에 하나의 필수 샘플링 비율을 정하는 것은 아닙니다. 서로 관련 없는 프레임을 한 장면으로 취급하지 말고, 여러 이미지의 순서와 역할을 지정하며 시퀀스를 해석하는 데 필요한 정보를 제공하세요.

릴리스 설정에서 최대 위치 수는 32,768로 정해져 있습니다. 시각 자료와 텍스트 지시는 실제 설정된 컨텍스트 안에서 계획해야 합니다. 카드의 128토큰 생성 예시는 예시 설정일 뿐이며, 별도의 최대 출력 용량을 공개하는 것은 아닙니다. 72B 에디션은 Qwen2.5-VL이나 다른 Qwen 모델의 긴 컨텍스트 설정을 가져오기보다 자체 설정을 유지해야 합니다.

주요 한계

제작사는 Qwen2-VL이 동영상에 포함된 오디오를 이해하지 못한다고 명시합니다. 따라서 질문에 말한 정보가 필요하다면 별도로 제공해야 합니다. 이미지 학습 데이터셋은 2023년 6월까지 갱신되었다고 설명됩니다. 이는 해당 데이터셋에 관한 설명이며, 현재의 시각적 지식을 약속하는 것이 아닙니다.

문서에 명시된 한계에는 특정 인물이나 이름으로 식별되는 지식재산의 불완전한 인식, 복잡한 여러 단계 지시의 어려움, 복잡한 장면에서 취약한 개수 세기, 3차원 공간 추론의 한계도 포함됩니다. 작업이 이런 능력 중 하나에 의존한다면 필요한 객체나 관계에 질문의 초점을 맞추고 답변 옆에 시각적 증거를 유지하세요. 명확한 원본 자료와 정해진 출력은 결과를 검토하기 쉽게 만들지만, 명시된 한계를 정확도 보장으로 대체하지는 않습니다.

실제 활용 과제

실제 활용 과제

영어 기술 예제

Read a supplied document transcription

Use this text transcription of page P2, section Limits: 'Store below 25 C. Once opened, use within seven days. Do not freeze.' Return the original wording first, then a plain-English explanation separating the temperature, time and freezing conditions. Preserve P2 as the source label. No image or video is attached.

예상 결과

A labelled transcription followed by three source-grounded explanations of the conditions.

결과 확인

Below 25 C is not rewritten as at or below 25 C, and the seven-day period starts at opening.
Ailoot Ultra · OpenAI Chat POST /v1/chat/completions Qwen/Qwen2-VL-72B-Instruct

Qwen/Qwen2-VL-72B-Instruct

Alibaba /Qwen/Qwen2-VL-72B-Instruct

시작하기

Qwen2-VL-72B-Instruct는 텍스트, 이미지, 동영상을 결합해 시각적 질문, 문서 읽기, 이미지 속 다국어 텍스트를 다룹니다. 제작사는 20분이 넘는 동영상 이해, 동적 이미지 해상도, 시각 에이전트 통합을 설명하며, 답변은 텍스트입니다.

허용 입력
텍스트
결과
텍스트

Ailoot에서 사용 가능 · 입력 및 메서드

Ailoot Ultra · OpenAI Chat POST /v1/chat/completions
입력
text
출력
text
출력 형식
json 또는 SSE
필드유형요건값과 한도기본값
필드model유형string요건필수값과 한도
Qwen/Qwen2-VL-72B-Instruct
기본값—
필드messages유형message[]요건필수값과 한도
최소 항목 수: 1
기본값—
필드messages[].role유형string요건필수값과 한도
예시: system, user, assistant, tool, function
조건: 이 역할들은 소스 코드의 호환 타입에 명시적으로 표현됩니다. 정확한 모델 역할 집합은 모델별로 다릅니다.
모델에 따라 다름
기본값—
필드messages[].content유형string|content_part[]|null요건선택 사항값과 한도기본값—
필드messages[].tool_calls유형tool_call[]요건선택 사항값과 한도기본값—
필드messages[].tool_call_id유형string요건선택 사항값과 한도
적용 조건: role=tool. 실제 반환된 ID를 사용하세요
기본값—
필드messages[].name유형string요건선택 사항값과 한도기본값—
필드messages[].reasoning_content유형string요건선택 사항값과 한도
적용 조건: 이 모델이 추론을 사용하는 경우 실제 반환된 추론을 그대로 다음 요청에 다시 전달하세요
기본값—
필드messages[].reasoning_details유형object|array요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드max_tokens유형integer요건선택 사항값과 한도
최솟값: 1
모델에 따라 다름
기본값—
필드max_completion_tokens유형integer요건선택 사항값과 한도
최솟값: 1
모델에 따라 다름
기본값—
필드stream유형boolean요건선택 사항값과 한도기본값false
필드stream_options.include_usage유형boolean요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드temperature유형number요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드top_p유형number요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드stop유형string|string[]요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드tools유형function_tool[]요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드tools[].type유형string요건선택 사항값과 한도
function
모델에 따라 다름
기본값—
필드tools[].function.name유형string요건필수값과 한도
적용 조건: 함수 도구 지정됨
기본값—
필드tools[].function.description유형string요건선택 사항값과 한도기본값—
필드tools[].function.parameters유형JSON_schema요건선택 사항값과 한도기본값—
필드tool_choice유형string|object요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드parallel_tool_calls유형boolean요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드response_format유형object요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드reasoning_effort유형string요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드reasoning유형object요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드service_tier유형string요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드instructions유형string요건선택 사항값과 한도
호환성 필드
기본값—
필드functions유형function[]요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드function_call유형string|object요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드prompt_cache_options유형object요건선택 사항값과 한도
모델에 따라 다름
기본값—
필드modalities유형string[]요건선택 사항값과 한도
text
기본값—
필드provider유형object요건선택 사항값과 한도
조건: 이 Ultra 텍스트 경로에서는 provider.options가 거부됩니다
기본값—
필드cache_control.ttl유형string요건선택 사항값과 한도
조건: 실제 프롬프트 캐시 지정 위치에서는 1h가 거부됩니다
기본값—
입력 자료 조합

텍스트 · UTF8 텍스트

messages[].content

메서드 매개변수와 수명 주기
매개변수명세
매개변수content_type명세application/json
매개변수required명세model, messages
매개변수material_types명세text
매개변수messages명세role/content 형식의 메시지 배열
매개변수file_material명세실제 UTF-8 문서를 텍스트로 그대로 삽입합니다. 파일 ID는 추정하지 않습니다
매개변수optional_controls명세stream, temperature, top_p, stop, max_tokens, max_completion_tokens, reasoning, response_format, tools, tool_choice
매개변수control_scope명세모델별로 다름. 사용자 함수 도구와 호스팅 도구는 서로 다릅니다
매개변수output_modalities명세text
매개변수hosted_operations명세false
매개변수multimodal_input_binding명세null

수명 주기: synchronous_or_streamed

정확한 모델 ID를 messages와 함께 보내세요.

컨텍스트 길이는 출력 상한이 아닙니다.

텍스트 파일은 텍스트를 그대로 제공할 수 있습니다. 이미지/오디오/파일 객체 입력에는 정확한 바인딩이 필요합니다.

요금

요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.

빠른 모드
미지정 빠른 모드를 선택한 경우
Flex 모드
미지정 flex 모드를 선택한 경우
최대 추론 수준
미지정 최대 추론 수준에 default 조정값을 적용하는 경우

Ailoot 요금

설정별 가격

설정요금표요금
설정토큰의 기본 단가요금표기본 요금요금
입력 · 입력 토큰 $0.00118 / 1K 토큰
출력 · 출력 토큰 $0.00118 / 1K 토큰
입력 · 캐시 읽기 $0 / 1K 토큰
입력 · 캐시 쓰기 $0 / 1K 토큰
입력 · 캐시 쓰기, 1시간 — / 1K 토큰

Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →

요청 예제

Ailoot Ultra · OpenAI Chat

curlPython SDKPython 스트리밍
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "Qwen/Qwen2-VL-72B-Instruct", "messages": [{"role": "user", "content": "Explain the difference between an observation and a hypothesis in three sentences."}]}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model='Qwen/Qwen2-VL-72B-Instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}])
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
from openai import OpenAI
import os
from pathlib import Path

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

with client.chat.completions.stream(model='Qwen/Qwen2-VL-72B-Instruct',messages=[{"role":"user","content":"Explain observations and hypotheses in three sentences."}]) as stream:
    with Path("stream-events.jsonl").open("w",encoding="utf-8") as log:
        for event in stream:
            payload=event.to_dict(mode="json")
            log.write(json.dumps(payload,ensure_ascii=False)+"\n"); log.flush()
            print(json.dumps(payload,ensure_ascii=False))
    final=stream.get_final_completion()
    save_result(final.to_dict(mode="json"),"stream-result")

결과 수신 및 저장

Ailoot Ultra · OpenAI Chat

json 또는 SSE

완료된 결과 모두 보관

반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.

각 선택지와 그 콘텐츠·도구 호출·추론을 모두 보존하세요. SSE에서는 선택지/도구 인덱스별로 증분을 조합하고 최종 종료 사유와 사용량을 유지하세요.

원래 응답을 확인해야 할 경우

요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.

응답 필드
필드유형
필드choices[].index유형integer
필드choices[].message.content유형string|null
필드choices[].message.tool_calls유형tool_call[]
필드choices[].message.reasoning_content유형string
필드choices[].message.reasoning_details유형object|array
필드choices[].finish_reason유형string|null
필드usage유형object
오류와 다음 단계
응답조건다음 단계
응답400 · invalid_request_error조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음다음 단계새 생성 요청 전에 표시된 필드를 수정하세요.

별칭

모델 별칭

Ailoot Ultra Qwen/Qwen2-VL-72B-Instruct

메서드 경로 별칭

위에 표시된 메서드 경로를 사용하세요.

관련 호출용 ID

Qwen/Qwen2-VL-72B-Instruct

Ailoot Ultra · Anthropic Messages POST /v1/messages Qwen/Qwen2-VL-72B-Instruct

Qwen/Qwen2-VL-72B-Instruct

Alibaba /Qwen/Qwen2-VL-72B-Instruct

시작하기

Qwen2-VL-72B-Instruct는 텍스트, 이미지, 동영상을 결합해 시각적 질문, 문서 읽기, 이미지 속 다국어 텍스트를 다룹니다. 제작사는 20분이 넘는 동영상 이해, 동적 이미지 해상도, 시각 에이전트 통합을 설명하며, 답변은 텍스트입니다.

허용 입력
텍스트
결과
json · sse

Ailoot에서 사용 가능 · 입력 및 메서드

Ailoot Ultra · Anthropic Messages POST /v1/messages
입력
text
출력
json, sse
출력 형식
JSON 또는 SSE
필드유형요건값과 한도기본값
필드model유형string요건필수값과 한도
Qwen/Qwen2-VL-72B-Instruct
기본값—
필드messages유형message[]요건필수값과 한도기본값—
필드messages[].role유형string요건필수값과 한도
user, assistant
기본값—
필드messages[].content유형string요건필수값과 한도기본값—
필드max_tokens유형integer요건필수값과 한도기본값—
필드stream유형boolean요건선택 사항값과 한도기본값false
입력 자료 조합

텍스트 · UTF-8 텍스트

messages[].content 문자열

메서드 매개변수와 수명 주기
매개변수명세
매개변수content_type명세application/json
매개변수required명세model, messages, max_tokens
매개변수optional_controls명세stream
매개변수material_types명세text
매개변수text_file_material명세실제 UTF-8 문서를 읽고 그 텍스트를 지정된 입력 또는 메시지 콘텐츠 문자열에 넣으세요.

수명 주기: synchronous_or_streamed

요금

요금 정보는 요청 옵션을 추가하지 않습니다. 지원되는 매개변수는 선택한 메서드에 표시됩니다.

빠른 모드
미지정 빠른 모드를 선택한 경우
Flex 모드
미지정 flex 모드를 선택한 경우
최대 추론 수준
미지정 최대 추론 수준에 default 조정값을 적용하는 경우

Ailoot 요금

설정별 가격

설정요금표요금
설정토큰의 기본 단가요금표기본 요금요금
입력 · 입력 토큰 $0.00118 / 1K 토큰
출력 · 출력 토큰 $0.00118 / 1K 토큰
입력 · 캐시 읽기 $0 / 1K 토큰
입력 · 캐시 쓰기 $0 / 1K 토큰
입력 · 캐시 쓰기, 1시간 — / 1K 토큰

Ailoot는 요청 전에 예상 금액을 미리 확보합니다. 결과를 받은 뒤 측정된 사용량을 기준으로 최종 요금을 정산합니다. 스트리밍 정산에는 최종 사용량 기록을 사용합니다. 금액 확보와 정산 방식 →

요청 예제

Ailoot Ultra · Anthropic Messages

최소 구성의 완전한 JSON 본문curl · 자신의 UTF-8 문서 사용Python · 결과 전체 저장
{
  "model": "Qwen/Qwen2-VL-72B-Instruct",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'Qwen/Qwen2-VL-72B-Instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'Qwen/Qwen2-VL-72B-Instruct', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))

결과 수신 및 저장

Ailoot Ultra · Anthropic Messages

JSON 또는 SSE

완료된 결과 모두 보관

반환된 완전한 응답, 파일, 콘텐츠 부분을 모두 보관하세요.

모든 콘텐츠 블록, 사고 서명, 실제 도구 사용 ID를 보존하세요. 모든 SSE 블록 증분을 조합하세요. 첫 텍스트 블록이 전체 출력은 아닙니다.

원래 응답을 확인해야 할 경우

요청/응답 ID와 헤더를 보존하세요. 텍스트 작업을 조회하는 범용 URL은 제공되지 않습니다.

응답 필드
필드유형
필드id유형string
필드model유형string
필드content[]유형text|thinking|tool_use|other content block
필드stop_reason유형string|null
필드usage유형object
오류와 다음 단계
응답조건다음 단계
응답400 · invalid_request_error조건필수 필드, 자료 표현 방식 또는 파라미터 값이 올바르지 않음다음 단계새 생성 요청 전에 표시된 필드를 수정하세요.

별칭

모델 별칭

Ailoot Ultra Qwen/Qwen2-VL-72B-Instruct

메서드 경로 별칭

위에 표시된 메서드 경로를 사용하세요.

관련 호출용 ID

Qwen/Qwen2-VL-72B-Instruct

FAQ · Qwen/Qwen2-VL-72B-Instruct
어떤 입력과 결과를 사용할 수 있나요?

POST /v1/chat/completions · Qwen/Qwen2-VL-72B-Instruct: text → text

POST /v1/messages · Qwen/Qwen2-VL-72B-Instruct: text → json, sse

요청은 어떤 필드를 사용하나요?

POST /v1/chat/completions · Qwen/Qwen2-VL-72B-Instruct: model, messages, stream, modalities, provider

POST /v1/messages · Qwen/Qwen2-VL-72B-Instruct: model, messages, max_tokens, stream

어떤 제한이 적용되나요?

POST /v1/chat/completions · Qwen/Qwen2-VL-72B-Instruct: messages.min_items: 1

자세히 보기

Claude Code, OpenCode, Hermes, 자체 앱에 Ailoot를 연결하세요.

회사와 그 프로젝트 포트폴리오

회사와 그 프로젝트 포트폴리오: 수백만 고객, 매월 수십억 규모의 매출.

할인받아 토큰을 구매하세요.

정기 작업에는 구독 할인, 토큰 구매에는 최대 50% 프로모션 코드.

구독
정기 요청에 맞는 할인 요금제를 선택하세요.
최대 50% 프로모션 코드
구매할 때 코드를 넣으면 진행 중 행사에 따라 가격을 다시 계산합니다.
이력의 지출
요청마다 모델, 토큰, 금액을 저장합니다.

구독 선택 · 모델 가격 보기

판매하는 제품에 API를 연결하세요.

Ailoot 공식 이용 조건과 라이선스 계약으로 SaaS, 앱, 봇에 사용하세요. 재판매에는 리셀러 라이선스를 요청하세요.

상업용 앱
서비스의 유료 기능에 텍스트, 이미지, 영상, 소리 생성을 넣으세요.
리셀러 라이선스
프로젝트 설명과 접근 구조를 보내 사용·재판매의 서면 조건을 요청하세요.
사이트의 문서
연결 전에 공식 이용 조건, 라이선스 계약, 데이터 처리 정책을 읽을 수 있습니다.

리셀러 라이선스 요청 · 공식 이용 조건과 라이선스 계약