Sha256: dbc1e448d580c80dd47c9069c5a7213539fb48d58f28e27b1ef44c679ae25629
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 KB
Contents
# frozen_string_literal: true module Luo class XinghuoAgentRunner < AgentRunnerBase include Configurable setting :retires, default: 3 on_init do @xinghuo = Xinghuo.new end on_request do context.messages = Messages.create(history: context.histories) .user(prompt: Luo::Prompts.luo_xinghuo_agent_input, context: {agents: self.class.agents, last_user_input: context.user_input}) context.response = @xinghuo.chat(context.messages) end on_result do agent_name = context.response.match(/调用工具:(.*)/)&.captures&.first&.strip&.gsub(/[[:punct:]]/, '') agent = self.class.agents[agent_name]&.new( context: context, action_input: context.user_input, client: @xinghuo ) answer = context.response.match(/最终回答:(.*)/)&.captures&.first&.strip if agent_name.nil? && !answer.nil? && agent.nil? context.final_result = answer else add_agent(agent) end end after_run do if context.final_result.nil? answer = context.response.match(/最终回答:(.*)/)&.captures&.first&.strip context.final_result = answer if answer end context.histories.user(context.user_input) context.histories.assistant(context.final_result) end end class XinghuoFinalAgent < Agent agent_name '智能问答' agent_desc '你可以问我任何问题,我都会尽力回答你' on_call_with_final_result do messages = Messages.create(history: context.histories).user(text: context.user_input) client.chat(messages) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
luo-0.1.2 | lib/luo/xinghuo_agent_runner.rb |
luo-0.1.1 | lib/luo/xinghuo_agent_runner.rb |