|
|
@ -801,11 +801,13 @@ class Agent:
|
|
|
|
if self.long_term_memory is not None:
|
|
|
|
if self.long_term_memory is not None:
|
|
|
|
logger.info("Querying long term memory...")
|
|
|
|
logger.info("Querying long term memory...")
|
|
|
|
self.memory_query(task_prompt)
|
|
|
|
self.memory_query(task_prompt)
|
|
|
|
|
|
|
|
|
|
|
|
# Generate response using LLM
|
|
|
|
# Generate response using LLM
|
|
|
|
response = self.llm(task_prompt, *args, **kwargs)
|
|
|
|
response_args = (
|
|
|
|
|
|
|
|
(task_prompt, *args) if img is None else (task_prompt, img, *args)
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
response = self.call_llm(*response_args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
# Check if response is a dictionary and has 'choices' key
|
|
|
|
# Check if response is a dictionary and has 'choices' key
|
|
|
|
if isinstance(response, dict) and 'choices' in response:
|
|
|
|
if isinstance(response, dict) and 'choices' in response:
|
|
|
|
response = response['choices'][0]['message']['content']
|
|
|
|
response = response['choices'][0]['message']['content']
|
|
|
@ -813,43 +815,45 @@ class Agent:
|
|
|
|
# If response is already a string, use it as is
|
|
|
|
# If response is already a string, use it as is
|
|
|
|
pass
|
|
|
|
pass
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
raise ValueError(f"Unexpected response format: {type(response)}")
|
|
|
|
raise ValueError(
|
|
|
|
|
|
|
|
f"Unexpected response format: {type(response)}"
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Check and execute tools
|
|
|
|
# Check and execute tools
|
|
|
|
if self.tools is not None:
|
|
|
|
if self.tools is not None:
|
|
|
|
print(f"self.tools is not None: {response}")
|
|
|
|
print(f"self.tools is not None: {response}")
|
|
|
|
self.parse_and_execute_tools(response)
|
|
|
|
self.parse_and_execute_tools(response)
|
|
|
|
|
|
|
|
|
|
|
|
# Log the step metadata
|
|
|
|
# Log the step metadata
|
|
|
|
logged = self.log_step_metadata(
|
|
|
|
logged = self.log_step_metadata(
|
|
|
|
loop_count, task_prompt, response
|
|
|
|
loop_count,
|
|
|
|
)
|
|
|
|
task_prompt,
|
|
|
|
logger.info(logged)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Conver to a str if the response is not a str
|
|
|
|
|
|
|
|
response = self.llm_output_parser(
|
|
|
|
|
|
|
|
response
|
|
|
|
response
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
logger.info(logged)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Convert to a str if the response is not a str
|
|
|
|
|
|
|
|
response = self.llm_output_parser(response)
|
|
|
|
|
|
|
|
|
|
|
|
# Print
|
|
|
|
# Print
|
|
|
|
if self.streaming_on is True:
|
|
|
|
if self.streaming_on is True:
|
|
|
|
self.stream_response(response)
|
|
|
|
self.stream_response(response)
|
|
|
|
else:
|
|
|
|
else:
|
|
|
|
print(response)
|
|
|
|
print(response)
|
|
|
|
|
|
|
|
|
|
|
|
# Add the response to the memory
|
|
|
|
# Add the response to the memory
|
|
|
|
self.short_memory.add(
|
|
|
|
self.short_memory.add(
|
|
|
|
role=self.agent_name, content=response
|
|
|
|
role=self.agent_name,
|
|
|
|
|
|
|
|
content=response
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# Add to all responses
|
|
|
|
# Add to all responses
|
|
|
|
all_responses.append(response)
|
|
|
|
all_responses.append(response)
|
|
|
|
|
|
|
|
|
|
|
|
# TODO: Implement reliablity check
|
|
|
|
# TODO: Implement reliability check
|
|
|
|
if self.tools is not None:
|
|
|
|
if self.tools is not None:
|
|
|
|
# self.parse_function_call_and_execute(response)
|
|
|
|
# self.parse_function_call_and_execute(response)
|
|
|
|
self.parse_and_execute_tools(response)
|
|
|
|
self.parse_and_execute_tools(response)
|
|
|
|
|
|
|
|
|
|
|
|
# if self.code_interpreter is True:
|
|
|
|
# if self.code_interpreter is True:
|
|
|
|
# # Parse the code and execute
|
|
|
|
# # Parse the code and execute
|
|
|
|
# logger.info("Parsing code and executing...")
|
|
|
|
# logger.info("Parsing code and executing...")
|
|
|
|