AI prompts
base on LLM agents built for control. Designed for real-world use. Deployed in minutes. <div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/emcie-co/parlant/blob/develop/docs/LogoTransparentLight.png?raw=true">
<img alt="Parlant - AI Agent Framework" src="https://github.com/emcie-co/parlant/blob/develop/docs/LogoTransparentDark.png?raw=true" width=400 />
</picture>
<h3>Finally, LLM agents that actually follow instructions</h3>
<p>
<a href="https://www.parlant.io/" target="_blank">π Website</a> β’
<a href="https://www.parlant.io/docs/quickstart/installation" target="_blank">β‘ Quick Start</a> β’
<a href="https://discord.gg/duxWqxKk6J" target="_blank">π¬ Discord</a> β’
<a href="https://www.parlant.io/docs/quickstart/examples" target="_blank">π Examples</a>
</p>
<p>
<!-- Keep these links. Translations will automatically update with the README. -->
<a href="https://zdoc.app/de/emcie-co/parlant">Deutsch</a> |
<a href="https://zdoc.app/es/emcie-co/parlant">EspaΓ±ol</a> |
<a href="https://zdoc.app/fr/emcie-co/parlant">franΓ§ais</a> |
<a href="https://zdoc.app/ja/emcie-co/parlant">ζ₯ζ¬θͺ</a> |
<a href="https://zdoc.app/ko/emcie-co/parlant">νκ΅μ΄</a> |
<a href="https://zdoc.app/pt/emcie-co/parlant">PortuguΓͺs</a> |
<a href="https://zdoc.app/ru/emcie-co/parlant">Π ΡΡΡΠΊΠΈΠΉ</a> |
<a href="https://zdoc.app/zh/emcie-co/parlant">δΈζ</a>
</p>
<p>
<a href="https://pypi.org/project/parlant/"><img alt="PyPI" src="https://img.shields.io/pypi/v/parlant?color=blue"></a>
<img alt="Python 3.10+" src="https://img.shields.io/badge/python-3.10+-blue">
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/license-Apache%202.0-green"></a>
<a href="https://discord.gg/duxWqxKk6J"><img alt="Discord" src="https://img.shields.io/discord/1312378700993663007?color=7289da&logo=discord&logoColor=white"></a>
<img alt="GitHub Repo stars" src="https://img.shields.io/github/stars/emcie-co/parlant?style=social">
</p>
<a href="https://trendshift.io/repositories/12768" target="_blank">
<img src="https://trendshift.io/api/badge/repositories/12768" alt="Trending on TrendShift" style="width: 250px; height: 55px;" width="250" height="55"/>
</a>
</div>
## π― The Problem Every AI Developer Faces
You build an AI agent. It works great in testing. Then real users start talking to it and...
- β It ignores your carefully crafted system prompts
- β It hallucinates responses in critical moments
- β It can't handle edge cases consistently
- β Each conversation feels like a roll of the dice
**Sound familiar?** You're not alone. This is the #1 pain point for developers building production AI agents.
## β‘ The Solution: Stop Fighting Prompts, Teach Principles
Parlant flips the script on AI agent development. Instead of hoping your LLM will follow instructions, **Parlant ensures it**.
```python
# Traditional approach: Cross your fingers π€
system_prompt = "You are a helpful assistant. Please follow these 47 rules..."
# Parlant approach: Ensured compliance β
await agent.create_guideline(
condition="Customer asks about refunds",
action="Check order status first to see if eligible",
tools=[check_order_status],
)
```
[β
Blog: How Parlant Ensures Agent Compliance](https://www.parlant.io/blog/how-parlant-guarantees-compliance)
#### Parlant gives you all the structure you need to build customer-facing agents that behave exactly as your business requires:
- **[Journeys](https://parlant.io/docs/concepts/customization/journeys)**:
Define clear customer journeys and how your agent should respond at each step.
- **[Behavioral Guidelines](https://parlant.io/docs/concepts/customization/guidelines)**:
Easily craft agent behavior; Parlant will match the relevant elements contextually.
- **[Tool Use](https://parlant.io/docs/concepts/customization/tools)**:
Attach external APIs, data fetchers, or backend services to specific interaction events.
- **[Domain Adaptation](https://parlant.io/docs/concepts/customization/glossary)**:
Teach your agent domain-specific terminology and craft personalized responses.
- **[Canned Responses](https://parlant.io/docs/concepts/customization/canned-responses)**:
Use response templates to eliminate hallucinations and guarantee style consistency.
- **[Explainability](https://parlant.io/docs/advanced/explainability)**:
Understand why and when each guideline was matched and followed.
<div align="center">
## π Get Your Agent Running in 60 Seconds
</div>
```bash
pip install parlant
```
```python
import parlant.sdk as p
@p.tool
async def get_weather(context: p.ToolContext, city: str) -> p.ToolResult:
# Your weather API logic here
return p.ToolResult(f"Sunny, 72Β°F in {city}")
@p.tool
async def get_datetime(context: p.ToolContext) -> p.ToolResult:
from datetime import datetime
return p.ToolResult(datetime.now())
async def main():
async with p.Server() as server:
agent = await server.create_agent(
name="WeatherBot",
description="Helpful weather assistant"
)
# Have the agent's context be updated on every response (though
# update interval is customizable) using a context variable.
await agent.create_variable(name="current-datetime", tool=get_datetime)
# Control and guide agent behavior with natural language
await agent.create_guideline(
condition="User asks about weather",
action="Get current weather and provide a friendly response with suggestions",
tools=[get_weather]
)
# Add other (reliably enforced) behavioral modeling elements
# ...
# π Test playground ready at http://localhost:8800
# Integrate the official React widget into your app,
# or follow the tutorial to build your own frontend!
if __name__ == "__main__":
import asyncio
asyncio.run(main())
```
**That's it!** Your agent is running with ensured rule-following behavior.
## π¬ See It In Action
<img alt="Parlant Demo" src="https://github.com/emcie-co/parlant/blob/develop/docs/demo.gif?raw=true" width="100%" />
## π₯ Why Developers Are Switching to Parlant
<table width="100%">
<tr>
<td width="50%">
### ποΈ **Traditional AI Frameworks**
</td>
<td width="50%">
### β‘ **Parlant**
</td>
</tr>
<tr>
<td width="50%">
- Write complex system prompts
- Hope the LLM follows them
- Debug unpredictable behaviors
- Scale by prompt engineering
- Cross fingers for reliability
</td>
<td width="50%">
- Define rules in natural language
- **Ensured** rule compliance
- Predictable, consistent behavior
- Scale by adding guidelines
- Production-ready from day one
</td>
</tr>
</table>
## π― Perfect For Your Use Case
<div align="center">
| **Financial Services** | **Healthcare** | **E-commerce** | **Legal Tech** |
| :----------------------: | :---------------------: | :-------------------------: | :------------------------: |
| Compliance-first design | HIPAA-ready agents | Customer service at scale | Precise legal guidance |
| Built-in risk management | Patient data protection | Order processing automation | Document review assistance |
</div>
## π οΈ Enterprise-Grade Features
- **π§ Conversational Journeys** - Lead the customer step-by-step to a goal
- **π― Dynamic Guideline Matching** - Context-aware rule application
- **π§ Reliable Tool Integration** - APIs, databases, external services
- **π Conversation Analytics** - Deep insights into agent behavior
- **π Iterative Refinement** - Continuously improve agent responses
- **π‘οΈ Built-in Guardrails** - Prevent hallucination and off-topic responses
- **π± React Widget** - [Drop-in chat UI for any web app](https://github.com/emcie-co/parlant-chat-react)
- **π Full Explainability** - Understand every decision your agent makes
## π Join 10,000+ Developers Building Better AI
<div align="center">
**Companies using Parlant:**
_Financial institutions β’ Healthcare providers β’ Legal firms β’ E-commerce platforms_
[](https://star-history.com/#emcie-co/parlant&Date)
</div>
## π What Developers Are Saying
> _"By far the most elegant conversational AI framework that I've come across! Developing with Parlant is pure joy."_ **β Vishal Ahuja, Senior Lead, Customer-Facing Conversational AI @ JPMorgan Chase**
## πββοΈ Quick Start Paths
<table border="0">
<tr>
<td><strong>π― I want to test it myself</strong></td>
<td><a href="https://www.parlant.io/docs/quickstart/installation">β 5-minute quickstart</a></td>
</tr>
<tr>
<td><strong>π οΈ I want to see an example</strong></td>
<td><a href="https://www.parlant.io/docs/quickstart/examples">β Healthcare agent example</a></td>
</tr>
<tr>
<td><strong>π I want to get involved</strong></td>
<td><a href="https://discord.gg/duxWqxKk6J">β Join our Discord community</a></td>
</tr>
</table>
## π€ Community & Support
- π¬ **[Discord Community](https://discord.gg/duxWqxKk6J)** - Get help from the team and community
- π **[Documentation](https://parlant.io/docs/quickstart/installation)** - Comprehensive guides and examples
- π **[GitHub Issues](https://github.com/emcie-co/parlant/issues)** - Bug reports and feature requests
- π§ **[Direct Support](https://parlant.io/contact)** - Direct line to our engineering team
## π License
Apache 2.0 - Use it anywhere, including commercial projects.
---
<div align="center">
**Ready to build AI agents that actually work?**
β **Star this repo** β’ π **[Try Parlant now](https://parlant.io/)** β’ π¬ **[Join Discord](https://discord.gg/duxWqxKk6J)**
_Built with β€οΈ by the team at [Emcie](https://emcie.co)_
</div>
", Assign "at most 3 tags" to the expected json: {"id":"12768","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"