Изображения и PDF
AITUNNEL поддерживает отправку изображений и PDF-файлов через API. Это руководство покажет вам, как работать с обоими типами файлов, используя наш API.
TIP
Вы можете отправить как PDF, так и изображения в одном запросе.
Входные изображения
Запросы с изображениями к мультимодальным моделям доступны через API /v1/chat/completions
с параметром messages
в формате multi-part. image_url
может быть либо URL, либо изображением в формате base64. Обратите внимание, что несколько изображений можно отправить в отдельных элементах массива content. Количество изображений, которые вы можете отправить в одном запросе, варьируется в зависимости от провайдера и модели. Из-за того, как обрабатывается контент, мы рекомендуем сначала отправлять текстовый запрос, а затем изображения. Если изображения должны идти первыми, мы рекомендуем поместить их в системный промпт.
Использование URL изображений
Вот как отправить изображение, используя URL:
import requests
import json
url = "https://api.aitunnel.ru/v1/chat/completions"
headers = {
"Authorization": "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json"
}
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Что изображено на этой картинке?"
},
{
"type": "image_url",
"image_url": {
"url": "https://img.freepik.com/free-photo/red-white-cat-i-white-studio_155003-13189.jpg"
}
}
]
}
]
payload = {
"model": "gpt-4o",
"messages": messages
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
const response = await fetch("https://api.aitunnel.ru/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o",
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Что изображено на этой картинке?",
},
{
type: "image_url",
image_url: {
url: "https://img.freepik.com/free-photo/red-white-cat-i-white-studio_155003-13189.jpg",
},
},
],
},
],
}),
});
const data = await response.json();
console.log(data);
Использование изображений в формате Base64
Для локально хранящихся изображений вы можете отправить их, используя кодировку base64. Вот как это сделать:
import requests
import json
import base64
from pathlib import Path
def encode_image_to_base64(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode('utf-8')
url = "https://api.aitunnel.ru/v1/chat/completions"
headers = {
"Authorization": "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json"
}
# Читаем и кодируем изображение
image_path = "path/to/your/image.jpg"
base64_image = encode_image_to_base64(image_path)
data_url = f"data:image/jpeg;base64,{base64_image}"
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Что изображено на этой картинке?"
},
{
"type": "image_url",
"image_url": {
"url": data_url
}
}
]
}
]
payload = {
"model": "gpt-4o",
"messages": messages
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
async function encodeImageToBase64(imagePath: string): Promise<string> {
const imageBuffer = await fs.promises.readFile(imagePath);
const base64Image = imageBuffer.toString("base64");
return `data:image/jpeg;base64,${base64Image}`;
}
// Читаем и кодируем изображение
const imagePath = "path/to/your/image.jpg";
const base64Image = await encodeImageToBase64(imagePath);
const response = await fetch("https://api.aitunnel.ru/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o",
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Что изображено на этой картинке?",
},
{
type: "image_url",
image_url: {
url: base64Image,
},
},
],
},
],
}),
});
const data = await response.json();
console.log(data);
Поддерживаемые типы изображений:
image/png
image/jpeg
image/webp
Поддержка PDF
AITUNNEL поддерживает обработку PDF через API /v1/chat/completions
. PDF-файлы могут быть отправлены как URL-адреса данных в формате base64 в массиве сообщений через тип контента файла. Эта функция работает с любой моделью на AITUNNEL.
INFO
Когда модель поддерживает ввод файлов нативно, PDF передается непосредственно в модель. Когда модель не поддерживает ввод файлов нативно, AITUNNEL проанализирует файл и передаст результаты анализа запрошенной модели.
Обратите внимание, что несколько PDF-файлов можно отправить в отдельных элементах массива content. Количество PDF-файлов, которые вы можете отправить в одном запросе, варьируется в зависимости от провайдера и модели. Из-за того, как обрабатывается контент, мы рекомендуем сначала отправлять текстовый запрос, а затем PDF. Если PDF должен идти первым, мы рекомендуем поместить его в системный промпт.
Обработка PDF
Вот как отправить и обработать PDF:
import requests
import json
import base64
from pathlib import Path
def encode_pdf_to_base64(pdf_path):
with open(pdf_path, "rb") as pdf_file:
return base64.b64encode(pdf_file.read()).decode('utf-8')
url = "https://api.aitunnel.ru/v1/chat/completions"
headers = {
"Authorization": "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json"
}
# Читаем и кодируем PDF
pdf_path = "path/to/your/document.pdf"
base64_pdf = encode_pdf_to_base64(pdf_path)
data_url = f"data:application/pdf;base64,{base64_pdf}"
messages = [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Какие основные моменты в этом документе?"
},
{
"type": "file",
"file": {
"filename": "document.pdf",
"file_data": data_url
}
},
]
}
]
payload = {
"model": "gpt-4o",
"messages": messages,
"plugins": plugins
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())
async function encodePDFToBase64(pdfPath: string): Promise<string> {
const pdfBuffer = await fs.promises.readFile(pdfPath);
const base64PDF = pdfBuffer.toString("base64");
return `data:application/pdf;base64,${base64PDF}`;
}
// Читаем и кодируем PDF
const pdfPath = "path/to/your/document.pdf";
const base64PDF = await encodePDFToBase64(pdfPath);
const response = await fetch("https://api.aitunnel.ru/v1/chat/completions", {
method: "POST",
headers: {
Authorization: "Bearer sk-aitunnel-xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-4o",
messages: [
{
role: "user",
content: [
{
type: "text",
text: "Какие основные моменты в этом документе?",
},
{
type: "file",
file: {
filename: "document.pdf",
file_data: base64PDF,
},
},
],
},
],
}),
});
const data = await response.json();
console.log(data);
Формат ответа
API вернет ответ в следующем формате:
{
"id": "gen-1234567890",
"model": "gpt-4o",
"object": "chat.completion",
"created": 1234567890,
"choices": [
{
"message": {
"role": "assistant",
"content": "Документ обсуждает..."
}
}
],
"usage": {
"prompt_tokens": 1000,
"completion_tokens": 100,
"total_tokens": 1100
}
}