Aller directement au contenu principal

🧠 Agents et Capacités

Agent CodeAct​

Description​

Cet agent implémente l'idée CodeAct (article, tweet) qui consolide les actions des agents LLM en un espace d'action code unifié pour à la fois la simplicité et la performance (voir article pour plus de détails).

L'idée conceptuelle est illustrée ci-dessous. À chaque tour, l'agent peut :

  1. Converse : Communiquer avec les humains en langage naturel pour demander des clarifications, des confirmations, etc.
  2. CodeAct : Choisir d'accomplir la tâche en exécutant du code
  • ExĂ©cuter toute commande bash Linux valide
  • ExĂ©cuter tout code Python valide avec un interprĂ©teur Python interactif. Cela est simulĂ© Ă  travers la commande bash, voir le système de plugin ci-dessous pour plus de dĂ©tails.

image

Système de Plugin​

Pour rendre l'agent CodeAct plus puissant avec seulement l'accès à l'espace d'action bash, l'agent CodeAct exploite le système de plugins d'OpenDevin:

Démonstration​

https://github.com/OpenDevin/OpenDevin/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac

Exemple de CodeActAgent avec gpt-4-turbo-2024-04-09 effectuant une tâche de science des données (régression linéaire)

Actions​

Action, CmdRunAction, IPythonRunCellAction, AgentEchoAction, AgentFinishAction, AgentTalkAction

Observations​

CmdOutputObservation, IPythonRunCellObservation, AgentMessageObservation, UserMessageObservation

Méthodes​

MĂ©thodeDescription
__init__Initialise un agent avec llm et une liste de messages list[Mapping[str, str]]
stepEffectue une étape en utilisant l'agent CodeAct. Cela inclut la collecte d'informations sur les étapes précédentes et invite le modèle à exécuter une commande.
search_memoryPas encore implémenté

En cours de réalisation & prochaine étape​

[] Support de la navigation sur le web [] Compléter le workflow pour l'agent CodeAct afin de soumettre des PRs Github

Agent Monologue​

Description​

L'agent Monologue utilise la mémoire à long terme et à court terme pour accomplir des tâches. La mémoire à long terme est stockée en tant qu'objet LongTermMemory et le modèle l'utilise pour rechercher des exemples du passé. La mémoire à court terme est stockée en tant qu'objet Monologue et le modèle peut la condenser si nécessaire.

Actions​

Action, NullAction, CmdRunAction, FileWriteAction, FileReadAction, AgentRecallAction, BrowseURLAction, GithubPushAction, AgentThinkAction

Observations​

Observation, NullObservation, CmdOutputObservation, FileReadObservation, AgentRecallObservation, BrowserOutputObservation

Méthodes​

MĂ©thodeDescription
__init__Initialise l'agent avec une mémoire à long terme et un monologue interne
_add_eventAjoute des événements au monologue de l'agent et condense avec un résumé automatiquement si le monologue est trop long
_initializeUtilise la liste INITIAL_THOUGHTS pour donner à l'agent un contexte pour ses capacités et comment naviguer dans le /workspace
stepModifie l'état actuel en ajoutant les actions et observations les plus récentes, puis invite le modèle à réfléchir à la prochaine action à entreprendre.
search_memoryUtilise VectorIndexRetriever pour trouver des souvenirs liés à la mémoire à long terme.

Agent Planificateur​

Description​

L'agent planificateur utilise une stratégie d'incitation spéciale pour créer des plans à long terme pour résoudre les problèmes. L'agent reçoit ses paires action-observation précédentes, la tâche actuelle, et un indice basé sur la dernière action effectuée à chaque étape.

Actions​

NullAction, CmdRunAction, CmdKillAction, BrowseURLAction, GithubPushAction, FileReadAction, FileWriteAction, AgentRecallAction, AgentThinkAction, AgentFinishAction, AgentSummarizeAction, AddTaskAction, ModifyTaskAction,

Observations​

Observation, NullObservation, CmdOutputObservation, FileReadObservation, AgentRecallObservation, BrowserOutputObservation

Méthodes​

MĂ©thodeDescription
__init__Initialise un agent avec llm
stepVérifie si l'étape actuelle est terminée, retourne AgentFinishAction si oui. Sinon, crée une incitation de planification et l'envoie au modèle pour inférence, en ajoutant le résultat comme prochaine action.
search_memoryPas encore implémenté