Testversion
This commit is contained in:
69
llamaMultiAgentApp.py
Normal file
69
llamaMultiAgentApp.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import tkinter as tk
|
||||
from tkinter import simpledialog, messagebox
|
||||
import ollama
|
||||
import random
|
||||
|
||||
class Agent:
|
||||
def __init__(self, role):
|
||||
self.role = role
|
||||
|
||||
def analyze_task(self, task):
|
||||
response = ollama.chat(
|
||||
model='llama3.2-vision',
|
||||
messages=[{
|
||||
'role': 'user',
|
||||
'content': f"As a {self.role}, analyze this task: {task}"
|
||||
}]
|
||||
)
|
||||
return response['message']['content']
|
||||
|
||||
class Supervisor:
|
||||
def __init__(self):
|
||||
self.agents = []
|
||||
|
||||
def add_agent(self, agent):
|
||||
self.agents.append(agent)
|
||||
|
||||
def assign_task(self, task):
|
||||
for agent in self.agents:
|
||||
analysis = agent.analyze_task(task)
|
||||
response = ollama.chat(
|
||||
model='llama3.2-vision',
|
||||
messages=[{
|
||||
'role': 'user',
|
||||
'content': f"As a supervisor, is this analysis satisfactory? Analysis: {analysis}"
|
||||
}]
|
||||
)
|
||||
if "yes" in response['message']['content'].lower():
|
||||
return f"Task solved by {agent.role}"
|
||||
return "Task not solved satisfactorily"
|
||||
|
||||
def create_multi_agent_system():
|
||||
roles = ['Detective', 'Scientist', 'Artist', 'Engineer', 'Philosopher']
|
||||
num_agents = simpledialog.askinteger("Input", "How many agents? (2-5)", minvalue=2, maxvalue=5)
|
||||
|
||||
supervisor = Supervisor()
|
||||
|
||||
for _ in range(num_agents):
|
||||
role = simpledialog.askstring("Input", f"Choose a role for agent {_+1}:\n" + "\n".join(roles))
|
||||
if role in roles:
|
||||
supervisor.add_agent(Agent(role))
|
||||
roles.remove(role)
|
||||
else:
|
||||
messagebox.showerror("Error", "Invalid role selected")
|
||||
return None
|
||||
|
||||
return supervisor
|
||||
|
||||
def main():
|
||||
root = tk.Tk()
|
||||
root.withdraw()
|
||||
|
||||
system = create_multi_agent_system()
|
||||
if system:
|
||||
task = simpledialog.askstring("Input", "Enter the task:")
|
||||
result = system.assign_task(task)
|
||||
messagebox.showinfo("Result", result)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user