Skip to content

Instantly share code, notes, and snippets.

@yshmarov
Forked from secretpray/Add chatGPT to Rails.md
Created April 4, 2023 06:44
Show Gist options
  • Save yshmarov/545b221999c547fd41cb9d1e8a26fedf to your computer and use it in GitHub Desktop.
Save yshmarov/545b221999c547fd41cb9d1e8a26fedf to your computer and use it in GitHub Desktop.

Для интеграции ChatGPT в приложение Rails вам потребуются следующие шаги:

  1. Получите API-ключ GPT, откройте сайт https://openai.com/ и зарегистрируйте аккаунт, елкгда будут инструкции по получению ключа.

  2. Добавьте библиотеку 'httparty' в файл Gemfile вашего приложения и запустите

bundle install
  1. Создайте класс в папке 'lib' вашего приложения для обращения к сервису GPT:
class GPT
  include HTTParty
  base_uri 'https://api.openai.com/v1'
  headers 'Content-Type' => 'application/json',
  'Authorization' => "Bearer #{ENV['OPENAI_GPT_API_KEY']}"

  def ask(question, model='text-davinci-002', max_tokens=100)
    response = self.class.post('/engines/'+ model + '/completions',
                                body: JSON.dump({ prompt: question,
                                                  temperature: 0.5,
                                                  max_tokens: max_tokens
                                                })
                               )
                               

    return response['choices'][0]['text']
  end
end
  1. Добавьте переменную окружения OPENAI_GPT_API_KEY в файл '.env' вашего приложения:
OPENAI_GPT_API_KEY=<ваш_ключ_GPT>
  1. В вашем контроллере добавьте действие, которое будет обращаться к классу GPT и возвращать ответ на заданный вопрос:
class QuestionsController < ApplicationController
  def chat
    @question = params[:question]
    @answer = GPT.new.ask(@question)
  end
end
  1. Создайте представление для отображения ответа в чате:
<h2>GPT response:</h2>
<%= @answer %></p>
  1. Настройте маршруты в вашем файле 'config/routes.rb':
Rails.application.routes.draw do
  get '/chat', to: 'questions#chat'
end
  1. В вашем файле 'app/views' добавьте форму для отправки вопроса:
<h2>Ask a question:</h2>
action="/chat" method="get">
<input type="text" name="question">
<input type="submit" value="Ask">
</form>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment