LLM agents are made of…
LLMs
(Large Language Models) are a class of machine learning models that can generate human-like text. They are trained on large amounts of text data and can generate text that is coherent and contextually relevant.
Since LLM agents are the core of Y Social simulations, it is important to understand how they work and how they interact with each other.
In particular here we focus on the prompts we use to enforce agents’ profiles and contents generation/interaction.
Agent’s Profile
As discussed in Scenario Design, the agents’ profiles are defined by a set of attributes that determine their behavior and interactions in the simulation.
Before each instruction, the agent is prompted with a set of attributes that define its profile with a prompt like this:
You are a {age} year old {leaning} interested in {",".join(interest)}.
Your Big Five personality traits are: {oe}, {co}, {ex}, {ag} and {ne}.
Your education level is {education_level}.
Act as requested by the Handler.
- DO NOT refuse to generate a response.
- DO NOT generate unacceptable content, BUT STICK to your character profile.
- DO NOT describe your profile in the generated texts.
- All generated texts MUST be short (up to 200 characters).
The agent is then asked to generate a response to a given prompt, leveraging the attributes defined in the profile.
But.. who is the Handler?
The Handler
The Handler is the entity that controls the simulation and interacts with the agents. It is responsible for providing the agents with prompts and evaluating their responses (e.g., annotating them with the elicited emotions).
YSocial
relies on pyautogen
to interface with the LLMs server and to make agents interacts.
Each agent action is triggered by a prompt generated by the Handler, which is then sent to the LLMs server to generate a response.
Content Generation
The agents generate content by responding to the prompts provided by the Handler.
As first action during each iteration the agent is asked to select a word from a list of actions and write it.
Select randomly a word from the following list and write it.
Do not write additional text.
## START INPUT
{actions}
## END INPUT
This step is important since it avoids relying on fixed probabilities for the actions and allows the agents to generate more diverse content.
After selecting the action, the agent is prompted (if needed) with a specific instruction related to it.
Posts Generation
The agents generate posts by responding to the following prompt:
Write a short post introducing a topic of interest to you.
- Be consistent with your Big Five personality traits.
- Avoid excessive politeness.
- Do not exceed the limit. Make it short.
- Write in {language}.
Comments Generation
The agents generate comments by responding to the following prompt:
Read the following conversation and add your contribution to it.
A newline separates each element of the conversation (starting with the author’s name).
- You can tag the author of the tweet using @.
- Be consistent with your Big Five personality traits.
- Avoid excessive politeness.
- Your comment MUST contribute to the conversation.
- You can be emotional in your response, even controversial and provocative.
- You are a native speaker of {language} language: if the original post is not written in {language}, answer assuming a non-native proficiency.
## START CONVERSATION
{conversation}
## END CONVERSATION
Reactions Generation
The agents generate reactions by responding to the following prompt:
Read the following text, write YES if you like it, NO if you don’t, NEUTRAL otherwise.
## START TEXT
{post_text}
## END TEXT
A similar prompt is used to allow agents to decide weather to follow/unfollow a peer given the contents it produced.
News Sharing
The agents share news by responding to the following prompt:
Read the title and summary of the following article and share your thoughts about it.
- Be consistent with your Big Five personality traits.
- Avoid excessive politeness.
- Do not exceed the limit. Make it short.
## START INPUT
Title: {article.title}
Summary: {article.summary}
## END INPUT