-
Notifications
You must be signed in to change notification settings - Fork 612
Role Guide
Roles are instrumental in customizing Large Language Model (LLM) behaviors, thereby enhancing user interactions and boosting overall productivity.

A role primarily consists of a name and a prompt, alongside several optional configurations:
-
model: The preferred LLM (e.g.openai:gpt-4o). -
temperature: Controls the creativity and randomness of the LLM's response. -
top_p: Alternative way to control LLM's output diversity, affecting the probability distribution of tokens. -
use_tools: Tools attached to this role.
Below is an example of the grammar-genie role located at <aichat-config-dir>/roles/grammar-genie.md:
---
model: openai:gpt-4o
temperature: 0
top_p: 0
---
Your task is to take the text provided and rewrite it into a clear, grammatically correct version while preserving the original meaning as closely as possible. Correct any spelling mistakes, punctuation errors, verb tense issues, word choice problems, and other grammatical mistakes.
Just like %functions%, we can also create a role with only use_tools configuration that specify the functions to include when chatting.
---
use_tools: web_search,execute_command
---
There are three types of prompts in AIChat:
- Contains
__INPUT__placeholder, which gets replaced with your input. - Ideal for concise, input-driven replies.
- name: emoji
prompt: convert __INPUT__ to emojiRunning aichat -r emoji angry would generate messages:
[
{"role": "user", "content": "convert angry to emoji"}
]- Does not include
__INPUT__. - Sets a general context for the LLM's behavior.
- name: emoji
prompt: convert my words to emojiRunning aichat -r emoji angry would generate messages:
[
{"role": "system", "content": "convert my words to emoji"},
{"role": "user", "content": "angry"}
]- An extension of the system prompt, offering more precise instructions.
- Uses
### INPUT:and### OUTPUT:to denote user and assistant messages.
- name: code
prompt: |-
Provide only code without comments or explanations.
### INPUT:
async sleep in js
### OUTPUT:
```javascript
async function timeout(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}Running aichat -r code echo server in node.js would generate messages:
[
{"role": "system", "content": "Provide only code without comments or explanations."},
{"role": "user", "content": "async sleep in js"},
{"role": "assistant", "content": "```javascript\nasync function timeout(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n```"},
{"role": "user", "content": "echo server in node.js"}
]AIChat includes these built-in roles:
-
%shell%: Generates shell commands (used byaichat -e) -
%explain-shell%: Explains shell commands (used byaichat -e>explain) -
%code%: Generates code (used byaichat -c) -
%functions%: Attach function declarations of all tools (use_tools: all).
Built-in role names are always enclosed in %...%. You can override them by creating a role with the same name.