fix: missing variables in agent prompt (#2395)

This commit is contained in:
Yeuoly 2024-02-05 18:11:06 +08:00 committed by GitHub
parent 5e145c1c22
commit e1a9e0ac29
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 20 additions and 1 deletions

View File

@ -222,6 +222,7 @@ class AssistantApplicationRunner(AppRunner):
conversation=conversation, conversation=conversation,
message=message, message=message,
query=query, query=query,
inputs=inputs,
) )
elif agent_entity.strategy == AgentEntity.Strategy.FUNCTION_CALLING: elif agent_entity.strategy == AgentEntity.Strategy.FUNCTION_CALLING:
assistant_fc_runner = AssistantFunctionCallApplicationRunner( assistant_fc_runner = AssistantFunctionCallApplicationRunner(

View File

@ -20,6 +20,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
def run(self, conversation: Conversation, def run(self, conversation: Conversation,
message: Message, message: Message,
query: str, query: str,
inputs: Dict[str, str],
) -> Union[Generator, LLMResult]: ) -> Union[Generator, LLMResult]:
""" """
Run Cot agent application Run Cot agent application
@ -35,6 +36,11 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
if 'Observation' not in app_orchestration_config.model_config.stop: if 'Observation' not in app_orchestration_config.model_config.stop:
app_orchestration_config.model_config.stop.append('Observation') app_orchestration_config.model_config.stop.append('Observation')
# override inputs
inputs = inputs or {}
instruction = self.app_orchestration_config.prompt_template.simple_prompt_template
instruction = self._fill_in_inputs_from_external_data_tools(instruction, inputs)
iteration_step = 1 iteration_step = 1
max_iteration_steps = min(self.app_orchestration_config.agent.max_iteration, 5) + 1 max_iteration_steps = min(self.app_orchestration_config.agent.max_iteration, 5) + 1
@ -108,7 +114,7 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
tools=prompt_messages_tools, tools=prompt_messages_tools,
agent_scratchpad=agent_scratchpad, agent_scratchpad=agent_scratchpad,
agent_prompt_message=app_orchestration_config.agent.prompt, agent_prompt_message=app_orchestration_config.agent.prompt,
instruction=app_orchestration_config.prompt_template.simple_prompt_template, instruction=instruction,
input=query input=query
) )
@ -300,6 +306,18 @@ class AssistantCotApplicationRunner(BaseAssistantApplicationRunner):
system_fingerprint='' system_fingerprint=''
), PublishFrom.APPLICATION_MANAGER) ), PublishFrom.APPLICATION_MANAGER)
def _fill_in_inputs_from_external_data_tools(self, instruction: str, inputs: dict) -> str:
"""
fill in inputs from external data tools
"""
for key, value in inputs.items():
try:
instruction = instruction.replace(f'{{{{{key}}}}}', str(value))
except Exception as e:
continue
return instruction
def _extract_response_scratchpad(self, content: str) -> AgentScratchpadUnit: def _extract_response_scratchpad(self, content: str) -> AgentScratchpadUnit:
""" """
extract response from llm response extract response from llm response