<h1><div align="center">
<img alt="pipecat" width="500px" height="auto" src="https://raw.githubusercontent.com/pipecat-ai/pipecat-flows/main/pipecat-flows.png">
</div></h1>
[![PyPI](https://img.shields.io/pypi/v/pipecat-ai-flows)](https://pypi.org/project/pipecat-ai-flows) [![Discord](https://img.shields.io/discord/1239284677165056021)](https://discord.gg/pipecat)
Pipecat Flows provides a framework for building structured conversations in your AI applications. It enables you to create both predefined conversation paths and dynamically generated flows while handling the complexities of state management and LLM interactions.
The framework consists of:
- A Python module for building conversation flows with Pipecat
- A visual editor for designing and exporting flow configurations
### When to Use Pipecat Flows
- **Static Flows**: When your conversation structure is known upfront and follows predefined paths. Perfect for customer service scripts, intake forms, or guided experiences.
- **Dynamic Flows**: When conversation paths need to be determined at runtime based on user input, external data, or business logic. Ideal for personalized experiences or complex decision trees.
## Installation
If you're already using Pipecat:
```bash
pip install pipecat-ai-flows
```
If you're starting fresh:
```bash
# Basic installation
pip install pipecat-ai-flows
# Install Pipecat with specific LLM provider options:
pip install "pipecat-ai[daily,openai,deepgram,cartesia]" # For OpenAI
pip install "pipecat-ai[daily,anthropic,deepgram,cartesia]" # For Anthropic
pip install "pipecat-ai[daily,google,deepgram,cartesia]" # For Google
```
## Quick Start
Here's a basic example of setting up a conversation flow:
```python
from pipecat_flows import FlowManager
# Initialize flow manager with static configuration
flow_manager = FlowManager(task, llm, tts, flow_config=flow_config)
# Or with dynamic flow handling
flow_manager = FlowManager(
task,
llm,
tts,
transition_callback=handle_transitions
)
@transport.event_handler("on_first_participant_joined")
async def on_first_participant_joined(transport, participant):
await transport.capture_participant_transcription(participant["id"])
await flow_manager.initialize(messages)
await task.queue_frames([context_aggregator.user().get_context_frame()])
```
For more detailed examples and guides, visit our [documentation](https://docs.pipecat.ai/guides/pipecat-flows).
## Core Concepts
### Flow Configuration
Each conversation flow consists of nodes that define the conversation structure. A node includes:
#### Messages
Messages set the context for the LLM at each state:
```python
"messages": [
{
"role": "system",
"content": "You are handling pizza orders. Ask for size selection."
}
]
```
#### Functions
Functions come in two types:
1. **Node Functions**: Execute operations within the current state
```python
{
"type": "function",
"function": {
"name": "select_size",
"handler": select_size_handler,
"description": "Select pizza size",
"parameters": {
"type": "object",
"properties": {
"size": {"type": "string", "enum": ["small", "medium", "large"]}
}
},
"transition_to": "next_node" # Optional: Specify next node
}
}
```
2. **Edge Functions**: Create transitions between states
```python
{
"type": "function",
"function": {
"name": "next_step",
"description": "Move to next state",
"parameters": {"type": "object", "properties": {}},
"transition_to": "target_node" # Required: Specify target node
}
}
```
Functions can:
- Have a handler (for data processing)
- Have a transition_to (for state changes)
- Have both (process data and transition)
- Have neither (end node functions)
#### Actions
Actions execute during state transitions:
```python
"pre_actions": [
{
"type": "tts_say",
"text": "Processing your order..."
}
]
```
#### Provider-Specific Formats
Pipecat Flows automatically handles format differences between LLM providers:
**OpenAI Format**
```python
"functions": [{
"type": "function",
"function": {
"name": "function_name",
"description": "description",
"parameters": {...}
}
}]
```
**Anthropic Format**
```python
"functions": [{
"name": "function_name",
"description": "description",
"input_schema": {...}
}]
```
**Google (Gemini) Format**
```python
"functions": [{
"function_declarations": [{
"name": "function_name",
"description": "description",
"parameters": {...}
}]
}]
```
### Flow Management
The FlowManager handles both static and dynamic flows through a unified interface:
#### Static Flows
```python
# Define flow configuration upfront
flow_config = {
"initial_node": "greeting",
"nodes": {
"greeting": {
"messages": [...],
"functions": [{
"type": "function",
"function": {
"name": "collect_name",
"description": "Record user's name",
"parameters": {...},
"handler": collect_name_handler, # Specify handler
"transition_to": "next_step" # Specify transition
}
}]
}
}
}
# Initialize with static configuration
flow_manager = FlowManager(task, llm, tts, flow_config=flow_config)
```
#### Dynamic Flows
```python
# Define transition handling
async def handle_transitions(function_name: str, args: Dict, flow_manager):
if function_name == "collect_age":
await flow_manager.set_node("next_step", create_next_node())
# Initialize with transition callback
flow_manager = FlowManager(task, llm, tts, transition_callback=handle_transitions)
```
## Examples
The repository includes several complete example implementations in the `examples/` directory.
### Static
In the `examples/static` directory, you'll find these examples:
- `food_ordering.py` - A restaurant order flow demonstrating node and edge functions
- `movie_explorer_openai.py` - Movie information bot demonstrating real API integration with TMDB
- `movie_explorer_anthropic.py` - The same movie information demo adapted for Anthropic's format
- `movie_explorer_gemini.py` - The same movie explorer demo adapted for Google Gemini's format
- `patient_intake.py` - A medical intake system showing complex state management
- `restaurant_reservation.py` - A reservation system with availability checking
- `travel_planner.py` - A vacation planning assistant with parallel paths
### Dynamic
In the `examples/dynamic` directory, you'll find these examples:
- `insurance_openai.py` - An insurance quote system using OpenAI's format
- `insurance_anthropic.py` - The same insurance system adapted for Anthropic's format
- `insurance_gemini.py` - The insurance system implemented with Google's format
Each LLM provider (OpenAI, Anthropic, Google) has slightly different function calling formats, but Pipecat Flows handles these differences internally while maintaining a consistent API for developers.
To run these examples:
1. **Setup Virtual Environment** (recommended):
```bash
python3 -m venv venv
source venv/bin/activate
```
2. **Installation**:
Install the package in development mode:
```bash
pip install -e .
```
Install Pipecat with required options for examples:
```bash
pip install "pipecat-ai[daily,openai,deepgram,cartesia,silero,examples]"
```
If you're running Google or Anthropic examples, you will need to update the installed options. For example:
```bash
# Install Google Gemini
pip install "pipecat-ai[daily,google,deepgram,cartesia,silero,examples]"
# Install Anthropic
pip install "pipecat-ai[daily,anthropic,deepgram,cartesia,silero,examples]"
```
3. **Configuration**:
Copy `env.example` to `.env` in the examples directory:
```bash
cp env.example .env
```
Add your API keys and configuration:
- DEEPGRAM_API_KEY
- CARTESIA_API_KEY
- OPENAI_API_KEY
- ANTHROPIC_API_KEY
- GOOGLE_API_KEY
- DAILY_API_KEY
Looking for a Daily API key and room URL? Sign up on the [Daily Dashboard](https://dashboard.daily.co).
4. **Running**:
```bash
python examples/static/food_ordering.py -u YOUR_DAILY_ROOM_URL
```
## Tests
The package includes a comprehensive test suite covering the core functionality.
### Setup Test Environment
1. **Create Virtual Environment**:
```bash
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
2. **Install Test Dependencies**:
```bash
pip install -r dev-requirements.txt -r test-requirements.txt
pip install "pipecat-ai[google,openai,anthropic]"
pip install -e .
```
### Running Tests
Run all tests:
```bash
pytest tests/
```
Run specific test file:
```bash
pytest tests/test_state.py
```
Run specific test:
```bash
pytest tests/test_state.py -k test_initialization
```
Run with coverage report:
```bash
pytest tests/ --cov=pipecat_flows
```
## Pipecat Flows Editor
A visual editor for creating and managing Pipecat conversation flows.
![Food ordering flow example](https://raw.githubusercontent.com/pipecat-ai/pipecat-flows/main/images/food-ordering-flow.png)
### Features
- Visual flow creation and editing
- Import/export of flow configurations
- Support for node and edge functions
- Merge node support for complex flows
- Real-time validation
### Naming Conventions
While the underlying system is flexible with node naming, the editor follows these conventions for clarity:
- **Start Node**: Named after your initial conversation state (e.g., "greeting", "welcome")
- **End Node**: Conventionally named "end" for clarity, though other names are supported
- **Flow Nodes**: Named to reflect their purpose in the conversation (e.g., "get_time", "confirm_order")
These conventions help maintain readable and maintainable flows while preserving technical flexibility.
### Online Editor
The editor is available online at [flows.pipecat.ai](https://flows.pipecat.ai).
### Local Development
#### Prerequisites
- Node.js (v14 or higher)
- npm (v6 or higher)
#### Installation
Clone the repository
```bash
git clone git@github.com:pipecat-ai/pipecat-flows.git
```
Navigate to project directory
```bash
cd pipecat-flows/editor
```
Install dependencies
```bash
npm install
```
Start development server
```bash
npm run dev
```
Open the page in your browser: http://localhost:5173.
#### Usage
1. Create a new flow using the toolbar buttons
2. Add nodes by right-clicking in the canvas
- Start nodes can have descriptive names (e.g., "greeting")
- End nodes are conventionally named "end"
3. Connect nodes by dragging from outputs to inputs
4. Edit node properties in the side panel
5. Export your flow configuration using the toolbar
#### Examples
The `editor/examples/` directory contains sample flow configurations:
- `food_ordering.json`
- `movie_explorer.py`
- `patient_intake.json`
- `restaurant_reservation.json`
- `travel_planner.json`
To use an example:
1. Open the editor
2. Click "Import Flow"
3. Select an example JSON file
See the [examples directory](editor/examples/) for the complete files and documentation.
### Development
#### Available Scripts
- `npm start` - Start production server
- `npm run dev` - Start development server
- `npm run build` - Build for production
- `npm run preview` - Preview production build locally
- `npm run preview:prod` - Preview production build with base path
- `npm run lint` - Check for linting issues
- `npm run lint:fix` - Fix linting issues
- `npm run format` - Format code with Prettier
- `npm run format:check` - Check code formatting
- `npm run docs` - Generate documentation
- `npm run docs:serve` - Serve documentation locally
#### Documentation
The Pipecat Flows Editor project uses JSDoc for documentation. To generate and view the documentation:
Generate documentation:
```bash
npm run docs
```
Serve documentation locally:
```bash
npm run docs:serve
```
View in browser by opening: http://localhost:8080
## Contributing
We welcome contributions from the community! Whether you're fixing bugs, improving documentation, or adding new features, here's how you can help:
- **Found a bug?** Open an [issue](https://github.com/pipecat-ai/pipecat-flows/issues)
- **Have a feature idea?** Start a [discussion](https://discord.gg/pipecat)
- **Want to contribute code?** Check our [CONTRIBUTING.md](CONTRIBUTING.md) guide
- **Documentation improvements?** [Docs](https://github.com/pipecat-ai/docs) PRs are always welcome
Before submitting a pull request, please check existing issues and PRs to avoid duplicates.
We aim to review all contributions promptly and provide constructive feedback to help get your changes merged.
## Getting help
➡️ [Join our Discord](https://discord.gg/pipecat)
➡️ [Pipecat Flows Guide](https://docs.pipecat.ai/guides/pipecat-flows)
➡️ [Reach us on X](https://x.com/pipecat_ai)
Raw data
{
"_id": null,
"home_page": null,
"name": "pipecat-ai-flows",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "pipecat, conversation, flows, state machine, ai, llm",
"author": null,
"author_email": null,
"download_url": "https://files.pythonhosted.org/packages/e6/36/4ff9bcad6ec85c258b0275735fffbee58ac5637a9b04ba0bc8cb43565655/pipecat_ai_flows-0.0.9.tar.gz",
"platform": null,
"description": "<h1><div align=\"center\">\n <img alt=\"pipecat\" width=\"500px\" height=\"auto\" src=\"https://raw.githubusercontent.com/pipecat-ai/pipecat-flows/main/pipecat-flows.png\">\n</div></h1>\n\n[![PyPI](https://img.shields.io/pypi/v/pipecat-ai-flows)](https://pypi.org/project/pipecat-ai-flows) [![Discord](https://img.shields.io/discord/1239284677165056021)](https://discord.gg/pipecat)\n\nPipecat Flows provides a framework for building structured conversations in your AI applications. It enables you to create both predefined conversation paths and dynamically generated flows while handling the complexities of state management and LLM interactions.\n\nThe framework consists of:\n\n- A Python module for building conversation flows with Pipecat\n- A visual editor for designing and exporting flow configurations\n\n### When to Use Pipecat Flows\n\n- **Static Flows**: When your conversation structure is known upfront and follows predefined paths. Perfect for customer service scripts, intake forms, or guided experiences.\n- **Dynamic Flows**: When conversation paths need to be determined at runtime based on user input, external data, or business logic. Ideal for personalized experiences or complex decision trees.\n\n## Installation\n\nIf you're already using Pipecat:\n\n```bash\npip install pipecat-ai-flows\n```\n\nIf you're starting fresh:\n\n```bash\n# Basic installation\npip install pipecat-ai-flows\n\n# Install Pipecat with specific LLM provider options:\npip install \"pipecat-ai[daily,openai,deepgram,cartesia]\" # For OpenAI\npip install \"pipecat-ai[daily,anthropic,deepgram,cartesia]\" # For Anthropic\npip install \"pipecat-ai[daily,google,deepgram,cartesia]\" # For Google\n```\n\n## Quick Start\n\nHere's a basic example of setting up a conversation flow:\n\n```python\nfrom pipecat_flows import FlowManager\n\n# Initialize flow manager with static configuration\nflow_manager = FlowManager(task, llm, tts, flow_config=flow_config)\n\n# Or with dynamic flow handling\nflow_manager = FlowManager(\n task,\n llm,\n tts,\n transition_callback=handle_transitions\n)\n\n@transport.event_handler(\"on_first_participant_joined\")\nasync def on_first_participant_joined(transport, participant):\n await transport.capture_participant_transcription(participant[\"id\"])\n await flow_manager.initialize(messages)\n await task.queue_frames([context_aggregator.user().get_context_frame()])\n```\n\nFor more detailed examples and guides, visit our [documentation](https://docs.pipecat.ai/guides/pipecat-flows).\n\n## Core Concepts\n\n### Flow Configuration\n\nEach conversation flow consists of nodes that define the conversation structure. A node includes:\n\n#### Messages\n\nMessages set the context for the LLM at each state:\n\n```python\n\"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"You are handling pizza orders. Ask for size selection.\"\n }\n]\n```\n\n#### Functions\n\nFunctions come in two types:\n\n1. **Node Functions**: Execute operations within the current state\n\n```python\n{\n \"type\": \"function\",\n \"function\": {\n \"name\": \"select_size\",\n \"handler\": select_size_handler,\n \"description\": \"Select pizza size\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"size\": {\"type\": \"string\", \"enum\": [\"small\", \"medium\", \"large\"]}\n }\n },\n \"transition_to\": \"next_node\" # Optional: Specify next node\n }\n}\n```\n\n2. **Edge Functions**: Create transitions between states\n\n```python\n{\n \"type\": \"function\",\n \"function\": {\n \"name\": \"next_step\",\n \"description\": \"Move to next state\",\n \"parameters\": {\"type\": \"object\", \"properties\": {}},\n \"transition_to\": \"target_node\" # Required: Specify target node\n }\n}\n```\n\nFunctions can:\n\n- Have a handler (for data processing)\n- Have a transition_to (for state changes)\n- Have both (process data and transition)\n- Have neither (end node functions)\n\n#### Actions\n\nActions execute during state transitions:\n\n```python\n\"pre_actions\": [\n {\n \"type\": \"tts_say\",\n \"text\": \"Processing your order...\"\n }\n]\n```\n\n#### Provider-Specific Formats\n\nPipecat Flows automatically handles format differences between LLM providers:\n\n**OpenAI Format**\n\n```python\n\"functions\": [{\n \"type\": \"function\",\n \"function\": {\n \"name\": \"function_name\",\n \"description\": \"description\",\n \"parameters\": {...}\n }\n}]\n```\n\n**Anthropic Format**\n\n```python\n\"functions\": [{\n \"name\": \"function_name\",\n \"description\": \"description\",\n \"input_schema\": {...}\n}]\n```\n\n**Google (Gemini) Format**\n\n```python\n\"functions\": [{\n \"function_declarations\": [{\n \"name\": \"function_name\",\n \"description\": \"description\",\n \"parameters\": {...}\n }]\n}]\n```\n\n### Flow Management\n\nThe FlowManager handles both static and dynamic flows through a unified interface:\n\n#### Static Flows\n\n```python\n# Define flow configuration upfront\nflow_config = {\n \"initial_node\": \"greeting\",\n \"nodes\": {\n \"greeting\": {\n \"messages\": [...],\n \"functions\": [{\n \"type\": \"function\",\n \"function\": {\n \"name\": \"collect_name\",\n \"description\": \"Record user's name\",\n \"parameters\": {...},\n \"handler\": collect_name_handler, # Specify handler\n \"transition_to\": \"next_step\" # Specify transition\n }\n }]\n }\n }\n}\n\n# Initialize with static configuration\nflow_manager = FlowManager(task, llm, tts, flow_config=flow_config)\n```\n\n#### Dynamic Flows\n\n```python\n# Define transition handling\nasync def handle_transitions(function_name: str, args: Dict, flow_manager):\n if function_name == \"collect_age\":\n await flow_manager.set_node(\"next_step\", create_next_node())\n\n# Initialize with transition callback\nflow_manager = FlowManager(task, llm, tts, transition_callback=handle_transitions)\n```\n\n## Examples\n\nThe repository includes several complete example implementations in the `examples/` directory.\n\n### Static\n\nIn the `examples/static` directory, you'll find these examples:\n\n- `food_ordering.py` - A restaurant order flow demonstrating node and edge functions\n- `movie_explorer_openai.py` - Movie information bot demonstrating real API integration with TMDB\n- `movie_explorer_anthropic.py` - The same movie information demo adapted for Anthropic's format\n- `movie_explorer_gemini.py` - The same movie explorer demo adapted for Google Gemini's format\n- `patient_intake.py` - A medical intake system showing complex state management\n- `restaurant_reservation.py` - A reservation system with availability checking\n- `travel_planner.py` - A vacation planning assistant with parallel paths\n\n### Dynamic\n\nIn the `examples/dynamic` directory, you'll find these examples:\n\n- `insurance_openai.py` - An insurance quote system using OpenAI's format\n- `insurance_anthropic.py` - The same insurance system adapted for Anthropic's format\n- `insurance_gemini.py` - The insurance system implemented with Google's format\n\nEach LLM provider (OpenAI, Anthropic, Google) has slightly different function calling formats, but Pipecat Flows handles these differences internally while maintaining a consistent API for developers.\n\nTo run these examples:\n\n1. **Setup Virtual Environment** (recommended):\n\n ```bash\n python3 -m venv venv\n source venv/bin/activate\n ```\n\n2. **Installation**:\n\n Install the package in development mode:\n\n ```bash\n pip install -e .\n ```\n\n Install Pipecat with required options for examples:\n\n ```bash\n pip install \"pipecat-ai[daily,openai,deepgram,cartesia,silero,examples]\"\n ```\n\n If you're running Google or Anthropic examples, you will need to update the installed options. For example:\n\n ```bash\n # Install Google Gemini\n pip install \"pipecat-ai[daily,google,deepgram,cartesia,silero,examples]\"\n # Install Anthropic\n pip install \"pipecat-ai[daily,anthropic,deepgram,cartesia,silero,examples]\"\n ```\n\n3. **Configuration**:\n\n Copy `env.example` to `.env` in the examples directory:\n\n ```bash\n cp env.example .env\n ```\n\n Add your API keys and configuration:\n\n - DEEPGRAM_API_KEY\n - CARTESIA_API_KEY\n - OPENAI_API_KEY\n - ANTHROPIC_API_KEY\n - GOOGLE_API_KEY\n - DAILY_API_KEY\n\n Looking for a Daily API key and room URL? Sign up on the [Daily Dashboard](https://dashboard.daily.co).\n\n4. **Running**:\n ```bash\n python examples/static/food_ordering.py -u YOUR_DAILY_ROOM_URL\n ```\n\n## Tests\n\nThe package includes a comprehensive test suite covering the core functionality.\n\n### Setup Test Environment\n\n1. **Create Virtual Environment**:\n\n ```bash\n python3 -m venv venv\n source venv/bin/activate # On Windows: venv\\Scripts\\activate\n ```\n\n2. **Install Test Dependencies**:\n ```bash\n pip install -r dev-requirements.txt -r test-requirements.txt\n pip install \"pipecat-ai[google,openai,anthropic]\"\n pip install -e .\n ```\n\n### Running Tests\n\nRun all tests:\n\n```bash\npytest tests/\n```\n\nRun specific test file:\n\n```bash\npytest tests/test_state.py\n```\n\nRun specific test:\n\n```bash\npytest tests/test_state.py -k test_initialization\n```\n\nRun with coverage report:\n\n```bash\npytest tests/ --cov=pipecat_flows\n```\n\n## Pipecat Flows Editor\n\nA visual editor for creating and managing Pipecat conversation flows.\n\n![Food ordering flow example](https://raw.githubusercontent.com/pipecat-ai/pipecat-flows/main/images/food-ordering-flow.png)\n\n### Features\n\n- Visual flow creation and editing\n- Import/export of flow configurations\n- Support for node and edge functions\n- Merge node support for complex flows\n- Real-time validation\n\n### Naming Conventions\n\nWhile the underlying system is flexible with node naming, the editor follows these conventions for clarity:\n\n- **Start Node**: Named after your initial conversation state (e.g., \"greeting\", \"welcome\")\n- **End Node**: Conventionally named \"end\" for clarity, though other names are supported\n- **Flow Nodes**: Named to reflect their purpose in the conversation (e.g., \"get_time\", \"confirm_order\")\n\nThese conventions help maintain readable and maintainable flows while preserving technical flexibility.\n\n### Online Editor\n\nThe editor is available online at [flows.pipecat.ai](https://flows.pipecat.ai).\n\n### Local Development\n\n#### Prerequisites\n\n- Node.js (v14 or higher)\n- npm (v6 or higher)\n\n#### Installation\n\nClone the repository\n\n```bash\ngit clone git@github.com:pipecat-ai/pipecat-flows.git\n```\n\nNavigate to project directory\n\n```bash\ncd pipecat-flows/editor\n```\n\nInstall dependencies\n\n```bash\nnpm install\n```\n\nStart development server\n\n```bash\nnpm run dev\n```\n\nOpen the page in your browser: http://localhost:5173.\n\n#### Usage\n\n1. Create a new flow using the toolbar buttons\n2. Add nodes by right-clicking in the canvas\n - Start nodes can have descriptive names (e.g., \"greeting\")\n - End nodes are conventionally named \"end\"\n3. Connect nodes by dragging from outputs to inputs\n4. Edit node properties in the side panel\n5. Export your flow configuration using the toolbar\n\n#### Examples\n\nThe `editor/examples/` directory contains sample flow configurations:\n\n- `food_ordering.json`\n- `movie_explorer.py`\n- `patient_intake.json`\n- `restaurant_reservation.json`\n- `travel_planner.json`\n\nTo use an example:\n\n1. Open the editor\n2. Click \"Import Flow\"\n3. Select an example JSON file\n\nSee the [examples directory](editor/examples/) for the complete files and documentation.\n\n### Development\n\n#### Available Scripts\n\n- `npm start` - Start production server\n- `npm run dev` - Start development server\n- `npm run build` - Build for production\n- `npm run preview` - Preview production build locally\n- `npm run preview:prod` - Preview production build with base path\n- `npm run lint` - Check for linting issues\n- `npm run lint:fix` - Fix linting issues\n- `npm run format` - Format code with Prettier\n- `npm run format:check` - Check code formatting\n- `npm run docs` - Generate documentation\n- `npm run docs:serve` - Serve documentation locally\n\n#### Documentation\n\nThe Pipecat Flows Editor project uses JSDoc for documentation. To generate and view the documentation:\n\nGenerate documentation:\n\n```bash\nnpm run docs\n```\n\nServe documentation locally:\n\n```bash\nnpm run docs:serve\n```\n\nView in browser by opening: http://localhost:8080\n\n## Contributing\n\nWe welcome contributions from the community! Whether you're fixing bugs, improving documentation, or adding new features, here's how you can help:\n\n- **Found a bug?** Open an [issue](https://github.com/pipecat-ai/pipecat-flows/issues)\n- **Have a feature idea?** Start a [discussion](https://discord.gg/pipecat)\n- **Want to contribute code?** Check our [CONTRIBUTING.md](CONTRIBUTING.md) guide\n- **Documentation improvements?** [Docs](https://github.com/pipecat-ai/docs) PRs are always welcome\n\nBefore submitting a pull request, please check existing issues and PRs to avoid duplicates.\n\nWe aim to review all contributions promptly and provide constructive feedback to help get your changes merged.\n\n## Getting help\n\n\u27a1\ufe0f [Join our Discord](https://discord.gg/pipecat)\n\n\u27a1\ufe0f [Pipecat Flows Guide](https://docs.pipecat.ai/guides/pipecat-flows)\n\n\u27a1\ufe0f [Reach us on X](https://x.com/pipecat_ai)\n",
"bugtrack_url": null,
"license": "BSD 2-Clause License",
"summary": "Conversation Flow management for Pipecat AI applications",
"version": "0.0.9",
"project_urls": {
"Source": "https://github.com/pipecat-ai/pipecat-flows",
"Website": "https://www.pipecat.ai"
},
"split_keywords": [
"pipecat",
" conversation",
" flows",
" state machine",
" ai",
" llm"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0beadae84eb6e6d7d8eb1ed793bf18599a93023901fc8500c5d95af2afdfaaa8",
"md5": "4ba150d6da728e6d39cd510d2a783985",
"sha256": "8fc1ce1f70cd3cc622b20ddb925146bf89c246499dcd477328dbede0c82a6ab0"
},
"downloads": -1,
"filename": "pipecat_ai_flows-0.0.9-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4ba150d6da728e6d39cd510d2a783985",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 19096,
"upload_time": "2024-12-08T15:04:53",
"upload_time_iso_8601": "2024-12-08T15:04:53.223046Z",
"url": "https://files.pythonhosted.org/packages/0b/ea/dae84eb6e6d7d8eb1ed793bf18599a93023901fc8500c5d95af2afdfaaa8/pipecat_ai_flows-0.0.9-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e6364ff9bcad6ec85c258b0275735fffbee58ac5637a9b04ba0bc8cb43565655",
"md5": "043e3b07ba13fd49ea31a4483eb710ee",
"sha256": "871e45313a3d970ffc9136d5850c06e2b08a9253c4f881a1e1b3476eca222582"
},
"downloads": -1,
"filename": "pipecat_ai_flows-0.0.9.tar.gz",
"has_sig": false,
"md5_digest": "043e3b07ba13fd49ea31a4483eb710ee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 24020,
"upload_time": "2024-12-08T15:04:55",
"upload_time_iso_8601": "2024-12-08T15:04:55.115415Z",
"url": "https://files.pythonhosted.org/packages/e6/36/4ff9bcad6ec85c258b0275735fffbee58ac5637a9b04ba0bc8cb43565655/pipecat_ai_flows-0.0.9.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-08 15:04:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "pipecat-ai",
"github_project": "pipecat-flows",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [
{
"name": "loguru",
"specs": [
[
"~=",
"0.7.2"
]
]
}
],
"lcname": "pipecat-ai-flows"
}