Sha256: 8ceb9dbcd25df594687c368506503b9aa6f971469ec96fa3cbf4398bb3eb56eb
Contents?: true
Size: 1.82 KB
Versions: 3
Compression:
Stored size: 1.82 KB
Contents
# frozen_string_literal: true module Luo class OpenAIAgentRunner < AgentRunnerBase include Configurable setting :retires, default: 3 setting :prompts do setting :input, default: Luo::Prompts.agent_input setting :system, default: Luo::Prompts.agent_system setting :tool_input, default: Luo::Prompts.agent_tool_input end setting :client, default: Luo::OpenAI.new on_request do context.messages = Messages.create(history: context.histories.search(context.user_input)) .system(prompt: config.prompts.system) .user(prompt: config.prompts.input, context: {agents: self.class.agents, last_user_input: context.user_input}) context.response = client.chat(context.messages) end on_result do begin actions = JSON.parse(context.response) rescue JSON::ParserError => e actions = JSON.parse ParserMarkdown.new(context.response).code end actions = [actions] if actions.is_a?(Hash) actions.each do |action| agent = self.class.agents[action['action']]&.new( context: context, action_input: action['action_input'], client: client ) add_agent(agent) if agent if action['action'] == "Final Answer" context.final_result = action['action_input'] save_history end end end after_run do if context.retries < config.retires && context.final_result.nil? context.messages = context.messages.assistant( prompt: config.prompts.tool_input, context: { tools_response: context.agent_results } ) context.response = client.chat(context.messages) context.retries += 1 on_result on_run after_run end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
luo-0.2.7 | lib/luo/open_ai_agent_runner.rb |
luo-0.2.6 | lib/luo/open_ai_agent_runner.rb |
luo-0.2.5 | lib/luo/open_ai_agent_runner.rb |