Інтеграція OpenAI API: GPT-4, GPT-4o, o1, o3
OpenAI надає кілька сімейств моделей з різними характеристиками. GPT-4o є оптимальним вибором для більшості завдань: мультимодальність, хороший баланс якості та вартості. o1/o3 призначені для завдань, що вимагають глибокого міркування (математика, код, логіка). GPT-4o-mini для високовантажних сценаріїв із простими завданнями.
Базова інтеграція
from openai import OpenAI, AsyncOpenAI
from pydantic import BaseModel
client = OpenAI() # Використовує OPENAI_API_KEY із середовища
async_client = AsyncOpenAI()
# Синхронний виклик
def chat(prompt: str, model: str = "gpt-4o") -> str:
response = client.chat.completions.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.1,
)
return response.choices[0].message.content
# Структурований вивід
class Extraction(BaseModel):
name: str
amount: float
currency: str
def extract_structured(text: str) -> Extraction:
response = client.beta.chat.completions.parse(
model="gpt-4o",
messages=[{"role": "user", "content": f"Витягніть дані: {text}"}],
response_format=Extraction,
)
return response.choices[0].message.parsed
# Потокова передача
def stream_response(prompt: str):
with client.chat.completions.stream(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}],
) as stream:
for chunk in stream.text_stream:
yield chunk
# Зір (GPT-4o)
def analyze_image(image_url: str, question: str) -> str:
response = client.chat.completions.create(
model="gpt-4o",
messages=[{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": image_url}},
{"type": "text", "text": question}
]
}]
)
return response.choices[0].message.content
o1/o3 для завдань міркування
# o1 не підтримує системний запит, температуру, потокову передачу
def reason_with_o1(problem: str) -> str:
response = client.chat.completions.create(
model="o3-mini",
messages=[{"role": "user", "content": problem}],
# reasoning_effort: "low" | "medium" | "high" (для o3-mini)
reasoning_effort="high",
)
return response.choices[0].message.content
# o1 оптимальний для: математичних доказів, алгоритмічних задач,
# багатокрокового коду з обмеженнями, логічних головоломок
Управління вартістю
# Приблизні витрати (на 1M токенів, 2025):
# gpt-4o: $2.50 input / $10.00 output
# gpt-4o-mini: $0.15 input / $0.60 output
# o3-mini: $1.10 input / $4.40 output
def estimate_cost(text: str, model: str = "gpt-4o") -> float:
"""Приблизна оцінка вартості перед викликом API"""
tokens = len(text.split()) * 1.3 # Приблизно
costs = {"gpt-4o": 2.50, "gpt-4o-mini": 0.15, "o3-mini": 1.10}
return tokens / 1_000_000 * costs.get(model, 2.50)
Вбудовування та семантичний пошук
def get_embeddings(texts: list[str]) -> list[list[float]]:
response = client.embeddings.create(
model="text-embedding-3-small", # 1536 dims, $0.02/1M tokens
input=texts,
)
return [item.embedding for item in response.data]
Графік
- Базова інтеграція з чат-завершенням: 0,5–1 день
- Структуровані виходи + інструменти: 2–3 дні
- Логіка повторних спроб + управління вартістю: 1–2 дні







