Интеграция AI API в Django и FastAPI позволяет добавить генерацию текста, анализ данных и другие AI-функции в ваше Python-приложение. В этом руководстве мы покажем, как подключить ModelSwitch API к двум самым популярным Python-фреймворкам: Django и FastAPI.
Подготовка: установка зависимостей
Для работы с AI API нам понадобится OpenAI SDK (ModelSwitch полностью совместим с ним) и сам фреймворк. Установите необходимые пакеты:
# Для Django
pip install django openai python-dotenv
# Для FastAPI
pip install fastapi uvicorn openai python-dotenv sse-starlette
Создайте файл .env в корне проекта с вашим API-ключом:
# .env
MODELSWITCH_API_KEY=msk_ваш_ключ
MODELSWITCH_BASE_URL=https://api.modelswitch.ru/v1
Интеграция с Django
В Django удобно создать отдельный сервисный модуль для работы с AI. Создайте файл ai_service.py в вашем приложении:
# myapp/ai_service.py
import os
from openai import OpenAI
from dotenv import load_dotenv
load_dotenv()
client = OpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
)
def generate_response(prompt: str, model: str = "gpt-4o") -> str:
"""Генерация ответа через AI API."""
response = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "Ты полезный ассистент."},
{"role": "user", "content": prompt},
],
temperature=0.7,
max_tokens=2000,
)
return response.choices[0].message.content or ""
Теперь создайте Django view для обработки запросов:
# myapp/views.py
import json
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.views.decorators.http import require_POST
from .ai_service import generate_response
@csrf_exempt
@require_POST
def chat_view(request):
try:
body = json.loads(request.body)
prompt = body.get("prompt", "")
model = body.get("model", "gpt-4o")
if not prompt:
return JsonResponse({"error": "prompt is required"}, status=400)
answer = generate_response(prompt, model)
return JsonResponse({"response": answer})
except Exception as e:
return JsonResponse({"error": str(e)}, status=500)
Добавьте маршрут в urls.py:
# myapp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path("api/chat/", views.chat_view, name="chat"),
]
Интеграция с FastAPI
FastAPI идеально подходит для AI-приложений благодаря нативной поддержке асинхронности и streaming. Вот полный пример с поддержкой потоковой передачи:
# main.py
import os
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from openai import AsyncOpenAI
from sse_starlette.sse import EventSourceResponse
from dotenv import load_dotenv
load_dotenv()
app = FastAPI(title="AI Chat API")
aclient = AsyncOpenAI(
base_url=os.environ["MODELSWITCH_BASE_URL"],
api_key=os.environ["MODELSWITCH_API_KEY"],
)
class ChatRequest(BaseModel):
prompt: str
model: str = "gpt-4o"
stream: bool = False
@app.post("/api/chat")
async def chat(request: ChatRequest):
if request.stream:
return EventSourceResponse(stream_response(request))
response = await aclient.chat.completions.create(
model=request.model,
messages=[{"role": "user", "content": request.prompt}],
)
return {"response": response.choices[0].message.content}
async def stream_response(request: ChatRequest):
stream = await aclient.chat.completions.create(
model=request.model,
messages=[{"role": "user", "content": request.prompt}],
stream=True,
)
async for chunk in stream:
delta = chunk.choices[0].delta.content
if delta:
yield {"data": delta}
Запустите сервер командой uvicorn main:app --reload.
Сравнение подходов: Django vs FastAPI
Выбор фреймворка зависит от задачи:
| Критерий | Django | FastAPI |
|---|---|---|
| Асинхронность | Частичная (Django 4.1+) | Нативная |
| Streaming | Через StreamingHttpResponse | Через SSE / WebSocket |
| Скорость разработки | Высокая (ORM, admin) | Высокая (автодокументация) |
| Производительность | Средняя | Высокая |
| Для AI-сервисов | Подходит для монолитов | Идеален для микросервисов |
Для новых AI-проектов мы рекомендуем FastAPI благодаря нативной асинхронности и встроенной поддержке SSE. Для существующих Django-проектов используйте сервисный слой из примера выше.
Заключение
Интеграция AI API в Django и FastAPI через ModelSwitch занимает минимум времени. Один API-ключ даёт доступ к GPT-4o, Claude, Gemini и 300+ другим моделям. Используйте OpenAI SDK, который вы уже знаете, и просто укажите base_url ModelSwitch.