praisonaiagents 0.0.7__tar.gz → 0.0.8__tar.gz

Sign up to get free protection for your applications and to get access to all the features.
Files changed (24) hide show
  1. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/PKG-INFO +1 -1
  2. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/agent/agent.py +28 -18
  3. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents.egg-info/PKG-INFO +1 -1
  4. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/pyproject.toml +1 -1
  5. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/__init__.py +0 -0
  6. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/agent/__init__.py +0 -0
  7. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/agents/__init__.py +0 -0
  8. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/agents/agents.py +0 -0
  9. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/__init__.py +0 -0
  10. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/agent/__init__.py +0 -0
  11. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/agent/agent.py +0 -0
  12. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/agents/__init__.py +0 -0
  13. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/agents/agents.py +0 -0
  14. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/main.py +0 -0
  15. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/task/__init__.py +0 -0
  16. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/build/lib/praisonaiagents/task/task.py +0 -0
  17. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/main.py +0 -0
  18. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/task/__init__.py +0 -0
  19. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents/task/task.py +0 -0
  20. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents.egg-info/SOURCES.txt +0 -0
  21. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents.egg-info/dependency_links.txt +0 -0
  22. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents.egg-info/requires.txt +0 -0
  23. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/praisonaiagents.egg-info/top_level.txt +0 -0
  24. {praisonaiagents-0.0.7 → praisonaiagents-0.0.8}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: praisonaiagents
3
- Version: 0.0.7
3
+ Version: 0.0.8
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -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-mini",
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
- max_reflection_iter: int = 3
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.max_reflection_iter = max_reflection_iter
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.
@@ -371,7 +374,7 @@ class Agent:
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
- if reflection_output.satisfactory == "yes":
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
- logging.debug(f"{self.name} reflection not satisfactory, requesting regeneration.")
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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: praisonaiagents
3
- Version: 0.0.7
3
+ Version: 0.0.8
4
4
  Summary: Praison AI agents for completing complex tasks with Self Reflection Agents
5
5
  Author: Mervin Praison
6
6
  Requires-Dist: pydantic
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "praisonaiagents"
7
- version = "0.0.7"
7
+ version = "0.0.8"
8
8
  description = "Praison AI agents for completing complex tasks with Self Reflection Agents"
9
9
  authors = [
10
10
  { name="Mervin Praison" }