praisonaiagents 0.0.7__tar.gz → 0.0.9__tar.gz
Sign up to get free protection for your applications and to get access to all the features.
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/PKG-INFO +1 -1
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/agent/agent.py +34 -24
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/agents/agents.py +2 -2
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/PKG-INFO +1 -1
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/pyproject.toml +1 -1
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/agent/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/agents/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/agent/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/agent/agent.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/agents/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/agents/agents.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/main.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/task/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/task/task.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/main.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/task/__init__.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/task/task.py +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/SOURCES.txt +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/dependency_links.txt +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/requires.txt +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/top_level.txt +0 -0
- {praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/setup.cfg +0 -0
@@ -102,7 +102,7 @@ class Agent:
|
|
102
102
|
role: str,
|
103
103
|
goal: str,
|
104
104
|
backstory: str,
|
105
|
-
llm: Optional[Union[str, Any]] = "gpt-4o
|
105
|
+
llm: Optional[Union[str, Any]] = "gpt-4o",
|
106
106
|
tools: Optional[List[Any]] = None,
|
107
107
|
function_calling_llm: Optional[Any] = None,
|
108
108
|
max_iter: int = 20,
|
@@ -125,7 +125,9 @@ class Agent:
|
|
125
125
|
use_system_prompt: Optional[bool] = True,
|
126
126
|
markdown: bool = True,
|
127
127
|
self_reflect: bool = True,
|
128
|
-
|
128
|
+
max_reflect: int = 3,
|
129
|
+
min_reflect: int = 1,
|
130
|
+
reflect_llm: Optional[str] = None
|
129
131
|
):
|
130
132
|
self.name = name
|
131
133
|
self.role = role
|
@@ -155,8 +157,9 @@ class Agent:
|
|
155
157
|
self.chat_history = []
|
156
158
|
self.markdown = markdown
|
157
159
|
self.self_reflect = self_reflect
|
158
|
-
self.
|
159
|
-
|
160
|
+
self.max_reflect = max_reflect
|
161
|
+
self.min_reflect = min_reflect
|
162
|
+
self.reflect_llm = reflect_llm
|
160
163
|
def execute_tool(self, function_name, arguments):
|
161
164
|
"""
|
162
165
|
Execute a tool dynamically based on the function name and arguments.
|
@@ -287,8 +290,8 @@ class Agent:
|
|
287
290
|
def chat(self, prompt, temperature=0.2, tools=None, output_json=None):
|
288
291
|
if self.use_system_prompt:
|
289
292
|
system_prompt = f"""{self.backstory}\n
|
290
|
-
|
291
|
-
|
293
|
+
Your Role: {self.role}\n
|
294
|
+
Your Goal: {self.goal}
|
292
295
|
"""
|
293
296
|
else:
|
294
297
|
system_prompt = None
|
@@ -361,17 +364,17 @@ class Agent:
|
|
361
364
|
return response_text
|
362
365
|
|
363
366
|
reflection_prompt = f"""
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
367
|
+
Reflect on your previous response: '{response_text}'.
|
368
|
+
Identify any flaws, improvements, or actions.
|
369
|
+
Provide a "satisfactory" status ('yes' or 'no').
|
370
|
+
Output MUST be JSON with 'reflection' and 'satisfactory'.
|
368
371
|
"""
|
369
372
|
logging.debug(f"{self.name} reflection attempt {reflection_count+1}, sending prompt: {reflection_prompt}")
|
370
373
|
messages.append({"role": "user", "content": reflection_prompt})
|
371
374
|
|
372
375
|
try:
|
373
376
|
reflection_response = client.beta.chat.completions.parse(
|
374
|
-
model=self.llm,
|
377
|
+
model=self.reflect_llm if self.reflect_llm else self.llm,
|
375
378
|
messages=messages,
|
376
379
|
temperature=temperature,
|
377
380
|
response_format=ReflectionOutput
|
@@ -380,35 +383,42 @@ class Agent:
|
|
380
383
|
reflection_output = reflection_response.choices[0].message.parsed
|
381
384
|
|
382
385
|
if self.verbose:
|
383
|
-
display_self_reflection(f"Agent {self.name} self reflection: reflection='{reflection_output.reflection}' satisfactory='{reflection_output.satisfactory}'")
|
386
|
+
display_self_reflection(f"Agent {self.name} self reflection (using {self.reflect_llm if self.reflect_llm else self.llm}): reflection='{reflection_output.reflection}' satisfactory='{reflection_output.satisfactory}'")
|
384
387
|
|
385
388
|
messages.append({"role": "assistant", "content": f"Self Reflection: {reflection_output.reflection} Satisfactory?: {reflection_output.satisfactory}"})
|
386
389
|
|
387
|
-
|
390
|
+
# Only consider satisfactory after minimum reflections
|
391
|
+
if reflection_output.satisfactory == "yes" and reflection_count >= self.min_reflect - 1:
|
388
392
|
if self.verbose:
|
389
|
-
display_self_reflection("Agent marked the response as satisfactory")
|
393
|
+
display_self_reflection("Agent marked the response as satisfactory after meeting minimum reflections")
|
394
|
+
self.chat_history.append({"role": "user", "content": prompt})
|
390
395
|
self.chat_history.append({"role": "assistant", "content": response_text})
|
391
396
|
display_interaction(prompt, response_text, markdown=self.markdown, generation_time=time.time() - start_time)
|
392
397
|
return response_text
|
393
398
|
|
394
|
-
|
399
|
+
# Check if we've hit max reflections
|
400
|
+
if reflection_count >= self.max_reflect - 1:
|
401
|
+
if self.verbose:
|
402
|
+
display_self_reflection("Maximum reflection count reached, returning current response")
|
403
|
+
self.chat_history.append({"role": "user", "content": prompt})
|
404
|
+
self.chat_history.append({"role": "assistant", "content": response_text})
|
405
|
+
display_interaction(prompt, response_text, markdown=self.markdown, generation_time=time.time() - start_time)
|
406
|
+
return response_text
|
407
|
+
|
408
|
+
logging.debug(f"{self.name} reflection count {reflection_count + 1}, continuing reflection process")
|
395
409
|
messages.append({"role": "user", "content": "Now regenerate your response using the reflection you made"})
|
396
410
|
response = self._chat_completion(messages, temperature=temperature, tools=None, stream=True)
|
397
411
|
response_text = response.choices[0].message.content.strip()
|
412
|
+
reflection_count += 1
|
413
|
+
continue # Continue the loop for more reflections
|
414
|
+
|
398
415
|
except Exception as e:
|
399
416
|
display_error(f"Error in parsing self-reflection json {e}. Retrying")
|
400
417
|
logging.error("Reflection parsing failed.", exc_info=True)
|
401
418
|
messages.append({"role": "assistant", "content": f"Self Reflection failed."})
|
419
|
+
reflection_count += 1
|
420
|
+
continue # Continue even after error to try again
|
402
421
|
|
403
|
-
reflection_count += 1
|
404
|
-
|
405
|
-
self.chat_history.append({"role": "user", "content": prompt})
|
406
|
-
self.chat_history.append({"role": "assistant", "content": response_text})
|
407
|
-
|
408
|
-
if self.verbose:
|
409
|
-
logging.info(f"Agent {self.name} final response: {response_text}")
|
410
|
-
display_interaction(prompt, response_text, markdown=self.markdown, generation_time=time.time() - start_time)
|
411
|
-
return response_text
|
412
422
|
except Exception as e:
|
413
423
|
display_error(f"Error in chat: {e}")
|
414
424
|
return None
|
@@ -64,8 +64,8 @@ class PraisonAIAgents:
|
|
64
64
|
executor_agent = task.agent
|
65
65
|
|
66
66
|
task_prompt = f"""
|
67
|
-
|
68
|
-
|
67
|
+
You need to do the following task: {task.description}.
|
68
|
+
Expected Output: {task.expected_output}.
|
69
69
|
"""
|
70
70
|
if task.context:
|
71
71
|
context_results = ""
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents/build/lib/praisonaiagents/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{praisonaiagents-0.0.7 → praisonaiagents-0.0.9}/praisonaiagents.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|