Інтеграція OpenAI API з сайтом

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Інтеграція OpenAI API з сайтом
Середня
~3-5 робочих днів
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Інтеграція OpenAI API з вебсайтом

OpenAI API забезпечує доступ до GPT-4o, GPT-4o mini, DALL-E 3, Whisper та інших моделей. Інтеграція з вебсайтом відкриває можливості: AI-чат з користувачами, автоматична генерація контенту, аналіз тексту, транскрипція аудіо, генерація зображень.

Базова інтеграція

use OpenAI\Client;

$openai = OpenAI::client(config('services.openai.api_key'));

$response = $openai->chat()->create([
    'model'    => 'gpt-4o-mini',
    'messages' => [
        ['role' => 'system', 'content' => 'Ви асистент служби підтримки компанії X. Відповідайте стисло та по суті.'],
        ['role' => 'user',   'content' => $userMessage],
    ],
    'temperature' => 0.3,
    'max_tokens'  => 500,
]);

$answer = $response->choices[0]->message->content;

Стримінг відповідей

// Стримінг для ефекту "живого друку"
Route::get('/api/chat/stream', function (Request $request) {
    $message = $request->query('message');

    return response()->stream(function () use ($message) {
        $openai = OpenAI::client(config('services.openai.api_key'));
        $stream = $openai->chat()->createStreamed([
            'model'    => 'gpt-4o-mini',
            'messages' => [['role' => 'user', 'content' => $message]],
        ]);

        foreach ($stream as $response) {
            $chunk = $response->choices[0]->delta->content ?? '';
            if ($chunk) {
                echo "data: " . json_encode(['content' => $chunk]) . "\n\n";
                ob_flush();
                flush();
            }
        }
        echo "data: [DONE]\n\n";
    }, 200, [
        'Content-Type'  => 'text/event-stream',
        'Cache-Control' => 'no-cache',
    ]);
});
// Frontend: читаємо SSE потік
async function streamChat(message: string, onChunk: (text: string) => void) {
  const resp = await fetch(`/api/chat/stream?message=${encodeURIComponent(message)}`);
  const reader = resp.body!.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { done, value } = await reader.read();
    if (done) break;

    const lines = decoder.decode(value).split('\n');
    for (const line of lines) {
      if (line.startsWith('data: ') && line !== 'data: [DONE]') {
        const data = JSON.parse(line.slice(6));
        onChunk(data.content);
      }
    }
  }
}

Embeddings для семантичного пошуку

// Індексація контенту
$response = $openai->embeddings()->create([
    'model' => 'text-embedding-3-small',
    'input' => $article->title . "\n" . $article->content,
]);

$embedding = $response->embeddings[0]->embedding;  // вектор з 1536 вимірів

// Зберігаємо в PostgreSQL з розширенням pgvector
DB::statement(
    'UPDATE articles SET embedding = ? WHERE id = ?',
    [json_encode($embedding), $article->id]
);

// Пошук за векторною подібністю
$queryEmbedding = /* embedding пошукового запиту */;
$results = DB::select(
    'SELECT *, (embedding <=> ?) AS distance FROM articles ORDER BY distance LIMIT 5',
    [json_encode($queryEmbedding)]
);

Модерація контенту

$moderation = $openai->moderations()->create([
    'input' => $userComment,
]);

if ($moderation->results[0]->flagged) {
    $categories = array_filter((array) $moderation->results[0]->categories);
    Log::warning('Moderation flagged content', ['categories' => $categories]);
    throw new ContentModerationException('Коментар порушує правила сайту');
}

Генерація зображень (DALL-E 3)

$image = $openai->images()->create([
    'model'           => 'dall-e-3',
    'prompt'          => $request->prompt,
    'n'               => 1,
    'size'            => '1024x1024',
    'quality'         => 'standard',
    'response_format' => 'url',
]);

$imageUrl = $image->data[0]->url;

Оцінка вартості

GPT-4o mini: ~$0.15 / 1M вхідних токенів, $0.60 / 1M вихідних токенів. Для чату з 500 токенами на запит — приблизно $0.0004 за запит. При 10 000 запитів на день — ~$4/день.

Терміни

AI-чат зі стримінгом: 3–4 дні. Семантичний пошук з pgvector: +2 дні. Генерація зображень: 1–2 дні.