llm_agent.py
This Python module includes several classes and utilities for implementing agents within an environment using asynchronous execution (asyncio). The key class, LLMAgent, leverages a large language model (LLM) to generate actions based on observations and goals. It utilizes the sotopia library, presumably for multi-agent systems, and can produce script-like outputs if specified. Other classes include HumanAgent for human input and ScriptWritingAgent for generating scripted actions.
Classes
LLMAgent
This class represents an agent that interacts with an environment using a language model (LLM) to generate actions based on observations and goals.
Constructor: __init__
Initializes an instance with several attributes:
Arguments:
agent_name:str | None, defaultNone. Used for agent identification.uuid_str:str | None, defaultNone. A unique identifier for the agent.agent_profile:AgentProfile | None, defaultNone. An optional profile for the agent.model_name:str, default"gpt-3.5-turbo". Specifies the LLM model used.script_like:bool, defaultFalse. Determines if the agent produces script-like outputs.
Usage:
agent = LLMAgent(agent_name="My Agent", model_name="gpt-3.5-turbo")Attributes:
model_name:str | None. The name of the LLM model, defaulting to"gpt-3.5-turbo".script_like:bool. Determines if the agent produces script-like output.
Methods
-
goal(): Returns the agent's goal as a string. If not set, it raises an exception.Returns:
strUsage:
llm = LLMAgent() llm.goal = "Write a poem about nature" -
act(): Generates an action based on the agent's observations and goals.Arguments:
_obs:Observation. The current observation from the environment.
Returns:
AgentActionUsage:
agent = LLMAgent() action = agent.act(observation)
ScriptWritingAgent
This class extends the LLMAgent to generate actions by composing scripts based on observations using a language model.
Constructor: __init__
Arguments:
agent_name:str | None, defaultNone.uuid_str:str | None, defaultNone.agent_profile:AgentProfile | None, defaultNone.model_name:str, default"gpt-3.5-turbo".background:ScriptBackground, required for initialization.
Usage:
script = ScriptWritingAgent(agent_name="User", background=ScriptBackground())Attributes:
model_name:str | None, default"gpt-3.5-turbo".agent_names:list[str], stores agent names.background:ScriptBackground, required for script generation.
HumanAgent
This class simulates a human agent interacting with the environment by prompting the user for input and acting based on the user's choices.
Constructor: __init__
Arguments:
agent_name:str | None, defaultNone.uuid_str:str | None, defaultNone.agent_profile:AgentProfile | None, defaultNone.
Usage:
agent = HumanAgent(agent_name="User", uuid_str=None)Attributes:
model_name:"human". Specifies that this agent represents a human user.
Methods
-
goal(): Returns the current goal, or prompts the user for input if no goal is set.Usage:
human_agent = HumanAgent() goal = human_agent.goal -
act(): Prompts the user to select an action based on observations and returns anAgentAction.Usage:
human_agent = HumanAgent() human_agent.act(obs={"available_actions": ["move", "jump"]})
Agents
This class manages a collection of agents and allows for resetting or performing actions across multiple agents.
Methods
-
reset(): Resets all agents in the collection.Usage:
agents = Agents({"agent1": Agent(), "agent2": Agent()}) agents.reset() -
act(): Collects actions from all agents based on their respective observations.Arguments:
obs:dict[str, Observation]
Returns:
dict[str, AgentAction]Usage:
agents = Agents() actions = agents.act(obs_dict)
Functions
ainput()
Asynchronously retrieves user input while other tasks run concurrently.
Arguments:
prompt:str, default"".
Returns: str
Usage:
async def main():
response = await ainput("Enter your name: ")
task_name = response