83 lines
2.4 KiB
Markdown
83 lines
2.4 KiB
Markdown
# Multi-Agent Taboo Game
|
|
|
|
A PocketFlow example that demonstrates how to implement asynchronous multi-agent communication using the Taboo word guessing game.
|
|
|
|
## Features
|
|
|
|
- Implement asynchronous communication between two AI agents (Hinter and Guesser)
|
|
- Use AsyncNode for non-blocking agent interactions
|
|
- Create dynamic conversation flow through asyncio message queues
|
|
- Demonstrate complex turn-based game mechanics with LLMs
|
|
- Automatically terminate the game when the correct word is guessed
|
|
|
|
## Getting Started
|
|
|
|
1. Install the required dependencies:
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
2. Set your OpenAI API key as an environment variable:
|
|
|
|
```bash
|
|
export OPENAI_API_KEY=your_api_key_here
|
|
```
|
|
|
|
3. Run the application:
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
## How It Works
|
|
|
|
The workflow follows an asynchronous multi-agent communication pattern:
|
|
|
|
```mermaid
|
|
flowchart LR
|
|
AsyncHinter[AsyncHinter Node] <--> MessageQueue{Message Queue}
|
|
MessageQueue <--> AsyncGuesser[AsyncGuesser Node]
|
|
```
|
|
|
|
Here's what each component does:
|
|
|
|
1. **AsyncHinter Node**: Generates hints about the target word while avoiding forbidden words
|
|
2. **AsyncGuesser Node**: Makes guesses based on the hints received from the Hinter
|
|
3. **Message Queue**: Facilitates asynchronous communication between the agents
|
|
|
|
## Files
|
|
|
|
- [`main.py`](./main.py): Main entry point implementing the AsyncHinter and AsyncGuesser nodes and game flow
|
|
- [`utils.py`](./utils.py): Utility functions including LLM wrappers for generating hints and guesses
|
|
- [`requirements.txt`](./requirements.txt): Lists the required dependencies
|
|
|
|
## Example Output
|
|
|
|
```
|
|
=========== Taboo Game Starting! ===========
|
|
Target word: nostalgic
|
|
Forbidden words: ['memory', 'past', 'remember', 'feeling', 'longing']
|
|
============================================
|
|
|
|
Hinter: Here's your hint - Sentiment for earlier times.
|
|
Guesser: I guess it's - Nostalgia
|
|
|
|
Hinter: Here's your hint - Sentiment for earlier times.
|
|
Guesser: I guess it's - Reminiscence
|
|
|
|
Hinter: Here's your hint - Yearning for days gone by.
|
|
Guesser: I guess it's - Sentimentality
|
|
|
|
Hinter: Here's your hint - Reliving cherished moments or experiences.
|
|
Guesser: I guess it's - Memories
|
|
|
|
Hinter: Here's your hint - Recollection of cherished experiences.
|
|
Guesser: I guess it's - Reflection
|
|
|
|
Hinter: Here's your hint - Yearning for earlier times.
|
|
Guesser: I guess it's - Longing
|
|
|
|
Hinter: Here's your hint - Sentiment for earlier times.
|
|
Guesser: I guess it's - Nostalgic
|
|
Game Over - Correct guess! |