Twitter Agent
This tutorial guides you through creating a Twitter agent that automatically posts tweets at regular intervals using the Galadriel framework.
Prerequisites
- Python 3.10 or higher
- A Twitter developer account with API keys
- An OpenAI API key
Step 1: Set Up the Development Environment
-
Create a virtual environment:
python3 -m venv venv source venv/bin/activate
-
Install Galadriel:
pip install galadriel
Step 2: Obtain Twitter API Keys
- Create a Twitter developer account at https://developer.x.com/.
- Create a new app and obtain the following credentials:
- Consumer API Key
- Consumer API Secret
- Access Token
- Access Token Secret Ensure that the user authentication is set up with write access.
Step 3: Set Up Environment Variables
-
Create a file named
.env
in your project directory. -
Add the following environment variables to the
.env
file:OPENAI_API_KEY=<YOUR_OPENAI_API_KEY> TWITTER_CONSUMER_API_KEY=<YOUR_TWITTER_CONSUMER_API_KEY> TWITTER_CONSUMER_API_SECRET=<YOUR_TWITTER_CONSUMER_API_SECRET> TWITTER_ACCESS_TOKEN=<YOUR_TWITTER_ACCESS_TOKEN> TWITTER_ACCESS_TOKEN_SECRET=<YOUR_TWITTER_ACCESS_TOKEN_SECRET>
Replace the placeholder values with your actual API keys and tokens.
Optionally, to skip the actual Twitter posting and just print the results, add:
DRY_RUN=true
Step 4: Create the Twitter Agent
-
Create a file named
twitter_agent.py
with the following code:import asyncio import os from pathlib import Path from dotenv import load_dotenv from galadriel import CodeAgent from galadriel import AgentRuntime from galadriel.clients import Cron from galadriel.core_agent import LiteLLMModel from galadriel.tools.twitter import TwitterPostTool load_dotenv(dotenv_path=Path(".") / ".env", override=True) llm_model = LiteLLMModel(model_id="gpt-4o", api_key=os.getenv("OPENAI_API_KEY")) POST_INTERVAL_SECONDS = 3 * 60 * 60 # 3 hours AGENT_PROMPT = """ You are a humorous Twitter user. Every time you are called: 1. Generate a short tweet (1-2 sentences). About any topic. 2. Post the tweet. """ agent = CodeAgent( prompt_template=AGENT_PROMPT, model=llm_model, tools=[TwitterPostTool()], ) runtime = AgentRuntime( agent=agent, inputs=[Cron(POST_INTERVAL_SECONDS)], outputs=[], # No output, posting happens inside Agent ) asyncio.run(runtime.run())
Key components:
LiteLLMModel
: Loads the OpenAI GPT-4o model.TwitterPostTool
: Enables posting tweets to Twitter.CodeAgent
: Creates the agent with the specified prompt and tools.Cron
: Triggers the agent to run every 3 hours.AgentRuntime
: Manages the execution of the agent.
Step 5: Run the Agent
Execute the script:
The agent will now run automatically, generating and posting tweets every 3 hours. If DRY_RUN=true
is set, it will print the generated tweets
to the console instead of posting them to Twitter.
Example using tweet from output client
Create a file named twitter_agent.py
with the following code:
import asyncio
import os
from pathlib import Path
from dotenv import load_dotenv
from galadriel import CodeAgent
from galadriel import AgentRuntime
from galadriel.clients import Cron
from galadriel.clients.twitter_post_client import TwitterPostClient
from galadriel.core_agent import LiteLLMModel
load_dotenv(dotenv_path=Path(".") / ".env", override=True)
llm_model = LiteLLMModel(model_id="gpt-4o", api_key=os.getenv("OPENAI_API_KEY"))
POST_INTERVAL_SECONDS = 5
AGENT_PROMPT = """
You are a humorous Twitter user.
Generate a short tweet (1-2 sentences). About any topic.
"""
agent = CodeAgent(
prompt_template=AGENT_PROMPT,
model=llm_model,
tools=[],
)
runtime = AgentRuntime(
agent=agent,
inputs=[Cron(POST_INTERVAL_SECONDS)],
outputs=[TwitterPostClient()],
)
asyncio.run(runtime.run())
Conclusion
You have now created a fully autonomous Twitter agent using the Galadriel framework. This agent runs continuously, generating and posting
tweets without any manual intervention. You can further customize the agent by modifying the prompt, adding more tools, and adjusting the
posting interval.