deeplore-ai / deeplore

https://village-and-lies.netlify.app/
19 stars 1 forks source link

[FEATURE] Give action to pnj by llm #5

Open thomasBontempsTecrisViattech opened 1 month ago

thomasBontempsFr commented 1 month ago

Les actions sont données par le LLM en fonction des conversations et besoin du pnj

JosselinTILLAY commented 1 month ago

Pour l'instant, une seule action : goto [CHARACTER_NAME]

(est-ce qu'on ajoute RUN pour si un pnj veut fuir le détective ?)

thomasBontempsFr commented 1 month ago

@JosselinTILLAY Je ne sais pas trop. Si tu implémentes courir, le joueur pourra tout le temps courir avec son perso ?

En vrai si tu l'implémente, faut que un pnj qui voit quelqu'un courir le garde en mémoire et donc tu dois me renvoyer un string dès que quelqu'un court.

Comme ça je pourrais faire en sorte que le pnj s'en souvient.

Le gros problème d'ajouter des petites fonctions comme ça, c'est que l'on peut vite perdre l'effet "humain" du pnj.

Gin-Quin commented 1 month ago

Si on veut implémenter les actions, il faut changer le système de prompt et la façon dont on l'imagine.

Je tente un début de spec :

On utilise dorénavant deux types de prompts : les événements et les actions.

Événements

Les événements sont les prompts entrants. À chaque événement, un PNJ peut décider de ne pas réagir (répondre avec une action "nulle") ou bien de changer son action.

Types d'événements :

Actions

Les actions sont les prompts sortants. Certaines actions peuvent écraser d'autres actions précédentes (par exemple, "suivre X" va écraser "suivre Y").

Types d'actions :

Exemple

Le thread d'un personnage ne contient désormais plus que des événements (prompts entrants) et des actions (prompts sortants). Ces prompts sont sous format JSON.

{ "type": "event", "name": "talk_from", "from": "Matthieu Mancini", "text": "You can do be do wat you want to do" }

{ "type": "action", "name": null }

{ "type": "event", "name": "talk_from", "from": "Matthieu Mancini", "text": "Be do be do" }

{ "type": "action", "name": null }

{ "type": "event", "name": "see_character", "character": "François Hollande" }

{ "type": "action", "name": "speak_to", "character": "François Hollande", "text": "Cher monsieur, que faites-vous ici ?" }

etc...