Files
llama_mit_vision/llamaMultiAgentApp.py
2024-11-13 17:13:49 +01:00

70 lines
2.0 KiB
Python

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()