Added autogen agentics from gaiagraph
Browse files
app.py
CHANGED
|
@@ -42,12 +42,53 @@ team = [
|
|
| 42 |
|
| 43 |
|
| 44 |
# Prompt and data flow refinement
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
#
|
| 48 |
-
|
| 49 |
-
|
| 50 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 51 |
|
| 52 |
# Multimedia output production (using Langchain's Text-Davinci-003 as default) because I don't know how to implement DSPy properly yet [TONIC PLEASE HELP LOL]
|
| 53 |
def produce_outputs(processed_data):
|
|
|
|
| 42 |
|
| 43 |
|
| 44 |
# Prompt and data flow refinement
|
| 45 |
+
message = f"{user_prompt}\n{generate_synthetic_data(f'Simulate scenarios for {user_prompt}')}"
|
| 46 |
+
|
| 47 |
+
# Agents Group Chat Finite State Machine
|
| 48 |
+
class GroupChatFSM:
|
| 49 |
+
def __init__(self, teams_config):
|
| 50 |
+
"""
|
| 51 |
+
Initialize with configurations for teams.
|
| 52 |
+
"""
|
| 53 |
+
self.teams = {team_name: self.Team(team_agents) for team_name, team_agents in teams_config.items()}
|
| 54 |
+
self.states = ["waiting", "interacting", "finalizing"]
|
| 55 |
+
self.current_state = "waiting"
|
| 56 |
+
|
| 57 |
+
def transition(self, to_state):
|
| 58 |
+
"""
|
| 59 |
+
Transition the state of the group chat based on FSM rules.
|
| 60 |
+
"""
|
| 61 |
+
if to_state in self.states:
|
| 62 |
+
self.current_state = to_state
|
| 63 |
+
else:
|
| 64 |
+
raise ValueError("Invalid state transition attempted.")
|
| 65 |
+
|
| 66 |
+
def broadcast(self, message):
|
| 67 |
+
"""
|
| 68 |
+
Broadcast a message to all teams based on the current FSM state.
|
| 69 |
+
"""
|
| 70 |
+
if self.current_state == "interacting":
|
| 71 |
+
responses = {team_name: team.broadcast(message) for team_name, team in self.teams.items()}
|
| 72 |
+
return responses
|
| 73 |
+
else:
|
| 74 |
+
return "The group chat is not in an interacting state."
|
| 75 |
+
|
| 76 |
+
class Team:
|
| 77 |
+
def __init__(self, agents_config):
|
| 78 |
+
self.agents = [self.Agent(agent_config) for agent_config in agents_config]
|
| 79 |
+
|
| 80 |
+
def broadcast(self, message):
|
| 81 |
+
responses = [agent.respond(message) for agent in self.agents]
|
| 82 |
+
return responses
|
| 83 |
+
|
| 84 |
+
class Agent:
|
| 85 |
+
def __init__(self, config):
|
| 86 |
+
self.agent_name = config['agent_name']
|
| 87 |
+
self.api_key = config['api_key']
|
| 88 |
+
self.model = config['model']
|
| 89 |
+
|
| 90 |
+
def respond(self, message):
|
| 91 |
+
return f"{self.agent_name} responding with {self.model}"
|
| 92 |
|
| 93 |
# Multimedia output production (using Langchain's Text-Davinci-003 as default) because I don't know how to implement DSPy properly yet [TONIC PLEASE HELP LOL]
|
| 94 |
def produce_outputs(processed_data):
|