Un semplice sistema multiagente con python

Un semplice sistema multiagente con python

Condividi con i tuoi amici...

L’intelligenza artificiale sta rapidamente progredendo verso sistemi sempre più complessi e integrati, dove l’interazione e la collaborazione tra più agenti intelligenti apre scenari affascinanti e potenzialmente rivoluzionari. Un esempio emblematico di tale progresso è il sistema multiagente. Un sistema del genere può essere pensato come una serie di moduli, o “agenti”, ciascuno dei quali riceve un input, esegue un’operazione e passa il risultato al successivo agente nella catena.

Questo flusso di informazioni, iterato su più livelli, permette un grado di elaborazione e un’apprendimento che sono sostanzialmente diversi – e potenzialmente più potenti – di quelli di un singolo agente operante in isolamento.

Il primo agente riceve una richiesta ed elabora una risposta, il secondo perfeziona la risposta in base al contesto fornito dal primo, e il terzo agente rifinisce ulteriormente la risposta tenendo conto di tutti i feedback ricevuti dagli agenti che lo precedono. Un tale sistema non solo risponde alle domande più accuratamente, ma può apprendere dalle interazioni precedenti, affinando la sua capacità di rispondere in maniera sempre più adeguata e contestualizzata.

Esempio con python

Creiamo un semplice sistema multiagente (3 agenti) con pyhton che si avvale di due file:

un modulo mod.py che definisce la classe agente e le istruzioni da dare agli agenti
e il file principale multiagente.py che orchestra il lavoro degli agenti

mod.py (modulo)

Il codice seguente definisce una classe chiamata agente che rappresenta un singolo agente all’interno di un sistema multiagente. Gli agenti sono progettati per utilizzare l’API di OpenAI per interagire con il modello di linguaggio GPT-4 e produrre una risposta basata su un prompt di input.


import openai
import json

class agente:
    def __init__(self, system, prompt):
        self.system = system
        self.prompt = prompt

    def azione(self):
        sistema=self.system
        prompt=self.prompt
        openai.api_key = "<chiave>"
        completions = openai.ChatCompletion.create(
             model="gpt-4-1106-preview",
            messages=[
                  {"role": "system", "content": sistema},
                  {"role": "user", "content": prompt}
               ]
        )
        
        result = json.dumps(completions)

        if result:
           json_response = json.loads(result)
           message = json_response['choices'][0]['message']['content']
           answer = message.strip()
        
        return answer
    

system1 =''

system2 =''

system3 =''



prompt1 =''

prompt2 =''

prompt3 =''

All’interno delle istruzioni system e prompt necessarie per addestrare il modello possono essere inseriti solo all’occorrenza i seguenti simboli: il simbolo [x] per indicare il dato inserito dall’utente, il simbolo [y] per indicare l’output del primo agente, il simbolo [z] per indicare l’output del secondo agente.

multiagente.py (principale)

Questo script illustra un flusso di lavoro in cui ogni agente riceve l’output del precedente e lo utilizza come input per il passo successivo. È un’illustrazione di come si possa costruire un sistema sequenziale di agenti che processano e trasformano informazioni in un flusso di lavoro collaborativo



from mod import agente, system1, system2, system3, prompt1, prompt2, prompt3

input1=input("dato:")

prompt1 = prompt1.replace("[x]", input1)

agente1 = agente(system1, prompt1)
risultato1 = agente1.azione()

prompt2 = prompt2.replace("[x]", input1)
prompt2 = prompt2.replace("[y]", risultato1)

agente2 = agente(system2, prompt2)
risultato2 = agente2.azione()

prompt3 = prompt3.replace("[x]", input1)
prompt3 = prompt3.replace("[y]", risultato1)
prompt3 = prompt3.replace("[z]", risultato2)

agente3 = agente(system3, prompt3)
output1 = agente3.azione()

print(output1)

Esempio banale di istruzioni

system1 ='Il tuo compito è quello di definire lo schema di un articolo'

system2 ='Il tuo compito è quello di scrivere un articolo seguendo lo schema che ti viene dato '

system3 ='Il tuo compito è quello di correggere e migliorare un articolo che ti viene dato'



prompt1 ='Crea uno schema di argomenti per un articolo che parla di [x]'

prompt2 ='Scrivi un articolo sulla base del seguente schema: [y]'

prompt3 ='Correggi e migliora il seguente articolo: [z]. Valuta la coerenza dell'articolo con il tema [x]'