1,200+ AI personas for LLMs and agents.
Project description
1,200+ AI personas for LLMs and agents.
It's just a JSON file, so you can use it in any environment.
⚡ Installation
pip install ai-personas
🔌 Usage
import ai_personas
print(ai_personas['Linux Terminal']['prompt'])
# => I want you to act as a linux terminal. I will type commands and you will...
Note: Most type checkers will falsely warn ai_personas is not subscriptable because they are incapable of analyzing runtime behavior (where the module is replaced w/ a dictionary for cleaner, direct access). You can safely suppress such warnings using # type: ignore.
💻 Examples
Find personas by keyword:
def find_personas(keyword):
return [
persona for persona, data in ai_personas.items()
if keyword.lower() in data['prompt'].lower()
]
print(find_personas('coach'))
# => ['Interview Preparation Coach', 'Life Coach', ...]
Get prompt for a persona:
def get_prompt(persona):
return ai_personas[persona]['prompt']
print(get_prompt('Food Critic'))
# => I want you to act as a food critic. I will tell you about a restaurant...
Get random personas:
def random_persona(qty=1):
import random
random_personas = random.sample(list(ai_personas), qty)
return random_personas[0] if qty == 1 else random_personas
print(random_persona())
# => e.g. Reverse Prompt Engineer
print(random_persona(10))
# => e.g. ['Internet Trend & Slang Intelligence', 'Tic-Tac-Toe Game', ...]
Get random prompt:
def random_prompt():
import random
return random.choice(list(ai_personas.values()))['prompt']
print(random_prompt())
# e.g. =>
#
# Act as a Node.js Automation Script Developer. You are an expert in creating
# automated scripts using Node.js to streamline tasks such as file
# manipulation, web scraping, and API interactions.
#
# Your task is to:
# - Write efficient Node.js scripts to automate ${taskType}.
# - Ensure the scripts are robust and handle errors gracefully.
# - Use modern JavaScript syntax and best practices.
# ...
Fill variables in template prompts:
def fill_vars_in_template(prompt, vals={}):
import re
return re.sub(r'\$\{(.*?)\}', lambda match: vals.get(match.group(1), match.group(0)), prompt)
prompt = personas['Node.js Automation Script Developer']['prompt']
filled_prompt = fill_vars_in_template(prompt, {'taskType': 'web scraping'})
print(filled_prompt)
# =>
# ...
# Your task is to:
# - Write efficient Node.js scripts to automate web scraping.
# ...
Combine prompts:
mega_prompt = f'''
When I start w/ sh: follow prompt A. When I start w/ win: follow prompt B.
Prompt A: {ai_personas['Linux Terminal']['prompt']}
Prompt B: {ai_personas['Windows Terminal']['prompt']}
'''
print(mega_prompt)
# =>
#
# When I start w/ sh: follow prompt A. When I start w/ win: follow prompt B.
#
# Prompt A: I want you to act as a linux terminal...
#
# Prompt B: I want you to act as a Windows Terminal...
Build system prompt:
system_prompt = ai_personas['Study Planner']['prompt']
messages = [
{'role': 'system', 'content': system_prompt},
{'role': 'user', 'content': 'Create a weekly study plan for calculus'}
]
Use persona w/ an LLM:
from openai import OpenAI
client = OpenAI()
shell_persona = ai_personas['Linux Terminal']['prompt']
shell_cmd = 'echo "UTC time: $(date -u +%H:%M:%S)"'
response = client.chat.completions.create(
model='gpt-5.4',
messages=[
{'role': 'system', 'content': shell_persona},
{'role': 'user', 'content': shell_cmd}
]
)
print(response.choices[0].message.content)
# e.g. => UTC time: 15:23:42
🏛️ License
| Data | CC0 1.0 Universal | Public domain |
| Code | MIT License | © 2026 KudoAI & contributors |
🧠 Contributors
All contributions are very welcome!
📜 Related
🤖 ai-personas (Node.js)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ai_personas-1.4.0.tar.gz.
File metadata
- Download URL: ai_personas-1.4.0.tar.gz
- Upload date:
- Size: 1.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d3435c43147dba00b56a1a78fbc85a270975eeef9e3b1a7b31271e87a0051ee
|
|
| MD5 |
c05bac7dc41922b6dceefe305bfaf7a2
|
|
| BLAKE2b-256 |
095212bb7e8d547f45c531366cefd0f054b440fbd1da18dd045d1820ad2116c3
|
Provenance
The following attestation bundles were made for ai_personas-1.4.0.tar.gz:
Publisher:
publish-to-pypi-on-new-python-tag.yml on KudoAI/ai-personas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_personas-1.4.0.tar.gz -
Subject digest:
4d3435c43147dba00b56a1a78fbc85a270975eeef9e3b1a7b31271e87a0051ee - Sigstore transparency entry: 1385573294
- Sigstore integration time:
-
Permalink:
KudoAI/ai-personas@ec1662285a6b686efe64b7b84481b6115fc96823 -
Branch / Tag:
refs/tags/python-v1.4.0 - Owner: https://github.com/KudoAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi-on-new-python-tag.yml@ec1662285a6b686efe64b7b84481b6115fc96823 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ai_personas-1.4.0-py2.py3-none-any.whl.
File metadata
- Download URL: ai_personas-1.4.0-py2.py3-none-any.whl
- Upload date:
- Size: 1.0 MB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b21cca5002305c15e17413c08b2e59b309028240873ec5d3ec6401f930b17be4
|
|
| MD5 |
462b8b6aea7c4280b4e55d237d8b8fb1
|
|
| BLAKE2b-256 |
cfc15515c69a32b7a273525994c7747b5aafa4a8073f7fc79c02016653b89021
|
Provenance
The following attestation bundles were made for ai_personas-1.4.0-py2.py3-none-any.whl:
Publisher:
publish-to-pypi-on-new-python-tag.yml on KudoAI/ai-personas
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ai_personas-1.4.0-py2.py3-none-any.whl -
Subject digest:
b21cca5002305c15e17413c08b2e59b309028240873ec5d3ec6401f930b17be4 - Sigstore transparency entry: 1385573312
- Sigstore integration time:
-
Permalink:
KudoAI/ai-personas@ec1662285a6b686efe64b7b84481b6115fc96823 -
Branch / Tag:
refs/tags/python-v1.4.0 - Owner: https://github.com/KudoAI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi-on-new-python-tag.yml@ec1662285a6b686efe64b7b84481b6115fc96823 -
Trigger Event:
push
-
Statement type: