1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-02 20:15:22 +02:00

Add streaming chat

This commit is contained in:
Zach Gollwitzer 2025-03-12 14:06:42 -04:00
parent d1b83541c1
commit 3f9858a67f
9 changed files with 127 additions and 13 deletions

View file

@ -20,4 +20,42 @@ class Chat < ApplicationRecord
)
end
end
def generate_next_ai_response
if messages.conversation.ordered.last&.role == "assistant"
Rails.logger.info("Skipping response because last message was an assistant message")
return
end
openai.chat(
parameters: {
model: "gpt-4o-mini",
stream: streamer,
n: 1,
messages: messages.conversation.order(:created_at).map do |message|
{
role: message.role,
content: message.content
}
end
}
)
end
private
def openai
OpenAI::Client.new(access_token: ENV["OPENAI_ACCESS_TOKEN"])
end
def streamer
message = messages.create!(
role: "assistant",
content: ""
)
proc do |chunk, _bytesize|
new_content = chunk.dig("choices", 0, "delta", "content")
message.update(content: message.content + new_content) if new_content
end
end
end