Hey there, fellow Ruby enthusiast! Ready to supercharge your projects with some AI magic? Let's dive into integrating ChatGPT's API using the nifty chatgpt-ruby package. Trust me, it's easier than you might think!
Before we jump in, make sure you've got:
First things first, let's get that gem installed:
gem install chatgpt-ruby
Easy peasy, right?
Now, let's set things up:
require 'chatgpt' ChatGPT.configure do |config| config.api_key = 'your_api_key_here' end client = ChatGPT::Client.new
Pro tip: Keep that API key safe! Use environment variables in production.
Let's give it a whirl:
response = client.chat(messages: [{ role: 'user', content: 'Hello, ChatGPT!' }]) puts response.choices.first.message.content
Boom! You've just had your first chat with AI.
Want to get fancy? Let's explore some cool features:
# Managing conversation context conversation = [ { role: 'system', content: 'You are a helpful assistant.' }, { role: 'user', content: 'What's the capital of France?' }, { role: 'assistant', content: 'The capital of France is Paris.' }, { role: 'user', content: 'What's its population?' } ] response = client.chat(messages: conversation) # Adjusting parameters response = client.chat( messages: [{ role: 'user', content: 'Write a haiku about Ruby' }], temperature: 0.7, max_tokens: 50 ) # Streaming responses client.chat(messages: [{ role: 'user', content: 'Tell me a joke' }]) do |chunk| print chunk.choices.first.delta.content end
Nobody likes errors, but they happen. Here's how to deal with them gracefully:
begin response = client.chat(messages: [{ role: 'user', content: 'Hello!' }]) rescue ChatGPT::Error => e puts "Oops! Something went wrong: #{e.message}" end
Keep things speedy with some caching:
require 'redis' redis = Redis.new cache_key = 'chatgpt_response_' + Digest::MD5.hexdigest(message) response = redis.get(cache_key) || client.chat(messages: [{ role: 'user', content: message }]) redis.set(cache_key, response) unless redis.exists?(cache_key)
And don't forget about rate limits – play nice with the API!
Let's put it all together:
require 'chatgpt' ChatGPT.configure do |config| config.api_key = ENV['OPENAI_API_KEY'] end client = ChatGPT::Client.new puts "Welcome to RubyChatBot! Type 'exit' to quit." loop do print "You: " user_input = gets.chomp break if user_input.downcase == 'exit' response = client.chat(messages: [{ role: 'user', content: user_input }]) puts "ChatGPT: #{response.choices.first.message.content}" end puts "Thanks for chatting!"
Don't forget to test your integration:
require 'minitest/autorun' require 'chatgpt' class ChatGPTTest < Minitest::Test def setup ChatGPT.configure do |config| config.api_key = 'test_api_key' end @client = ChatGPT::Client.new end def test_chat_response VCR.use_cassette('chatgpt_response') do response = @client.chat(messages: [{ role: 'user', content: 'Hello' }]) assert_instance_of ChatGPT::Response, response assert_not_empty response.choices.first.message.content end end end
When deploying, remember:
And there you have it! You're now equipped to integrate ChatGPT into your Ruby projects like a pro. Remember, the key to mastering this is experimentation, so don't be afraid to play around and push the boundaries.
For more in-depth info, check out the chatgpt-ruby documentation and OpenAI's API reference.
Now go forth and create some AI-powered Ruby magic! 🚀💎