feat: updated tictactoe agent README
This commit is contained in:
parent
8feb6b0c5d
commit
bae1526a4a
2 changed files with 27 additions and 39 deletions
|
|
@ -1,30 +1,32 @@
|
||||||
# AI vs AI Tic-Tac-Toe Game 🎮
|
# 🎮 Agent X vs Agent O: Tic-Tac-Toe Game
|
||||||
|
|
||||||
An interactive Tic-Tac-Toe game where two AI agents powered by different language models compete against each other built on phidata Agent Framework and Streamlit as UI. Watch as GPT-4O battles against either DeepSeek V3 or Google's Gemini 1.5 Flash in this classic game!
|
An interactive Tic-Tac-Toe game where two AI agents powered by different language models compete against each other built on phidata Agent Framework and Streamlit as UI. Watch as GPT-4O battles against either DeepSeek V3 or Google's Gemini 1.5 Flash in this classic game.
|
||||||
|
|
||||||
## Demo
|
## Features
|
||||||
|
|
||||||
|
### Multi-Agent System
|
||||||
|
- Player X: OpenAI's Gemini Flash 2.0
|
||||||
|
- Player O: DeepSeek v3
|
||||||
|
- Judge: GPT-4o for game outcome validation
|
||||||
|
|
||||||
https://github.com/user-attachments/assets/071597e8-0f06-4cb0-bd19-dccf229b7317
|
### Interactive Interface
|
||||||
|
- Real-time game board visualization
|
||||||
|
- Move-by-move analysis
|
||||||
|
- Agent response tracking
|
||||||
|
- Clear game status updates
|
||||||
|
|
||||||
|
### Strategic Gameplay
|
||||||
|
- AI-powered move decisions
|
||||||
|
- Winning strategy implementation
|
||||||
|
- Opponent move blocking
|
||||||
|
- Victory condition monitoring
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
## Features 🌟
|
|
||||||
|
|
||||||
- Player X: Powered by OpenAI's GPT-4o (o1 models as api is yet to roll out for tier)
|
|
||||||
- Player O: Choice between DeepSeek AI or Google's Gemini
|
|
||||||
- Interactive game board using Streamlit
|
|
||||||
- Real-time move visualization
|
|
||||||
- AI Judge to determine game outcomes
|
|
||||||
- Clean and intuitive user interface
|
|
||||||
|
|
||||||
## Prerequisites 📋
|
|
||||||
|
|
||||||
- Python 3.8+
|
- Python 3.8+
|
||||||
- OpenAI API key
|
- OpenAI API key
|
||||||
- Either DeepSeek API key or Google API key (for Player O)
|
- Either DeepSeek API key or Google API key (for Player O)
|
||||||
|
|
||||||
## How to Run 🚀
|
## How to Run
|
||||||
|
|
||||||
1. **Setup Environment**
|
1. **Setup Environment**
|
||||||
```bash
|
```bash
|
||||||
|
|
@ -52,16 +54,16 @@ https://github.com/user-attachments/assets/071597e8-0f06-4cb0-bd19-dccf229b7317
|
||||||
- Watch as the AI agents battle it out!
|
- Watch as the AI agents battle it out!
|
||||||
- Monitor the game progress and final results
|
- Monitor the game progress and final results
|
||||||
|
|
||||||
## Game Components 🎯
|
## Game Components
|
||||||
|
|
||||||
- **Game Board**
|
- **Game Board**
|
||||||
- 3x3 interactive grid
|
- 3x3 interactive grid
|
||||||
- Real-time move visualization
|
- Real-time move visualization
|
||||||
- Clear symbol placement (X/O)
|
- Clear symbol placement (X/O)
|
||||||
|
|
||||||
- **AI Players**
|
- **AI Agent Players**
|
||||||
- Player X (GPT-4o): Strategic offensive moves
|
- Player X: Strategic offensive moves
|
||||||
- Player O (DeepSeek/Gemini): Defensive countermoves since this agent started later
|
- Player O: Defensive countermoves since this agent started later
|
||||||
- AI Judge: Game outcome validation
|
- AI Judge: Game outcome validation
|
||||||
|
|
||||||
- **Game Flow**
|
- **Game Flow**
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ from phi.model.deepseek import DeepSeekChat
|
||||||
from phi.model.google import Gemini
|
from phi.model.google import Gemini
|
||||||
|
|
||||||
# Streamlit App Title
|
# Streamlit App Title
|
||||||
st.title("🤖 Tic-Tac-Toe: AI vs AI")
|
st.title("🎮 Agent X vs Agent O: Tic-Tac-Toe Game")
|
||||||
|
|
||||||
# Enhanced Welcome Message
|
# Enhanced Welcome Message
|
||||||
with st.chat_message("assistant"):
|
with st.chat_message("assistant"):
|
||||||
|
|
@ -16,8 +16,8 @@ with st.chat_message("assistant"):
|
||||||
Here's what you need to know:
|
Here's what you need to know:
|
||||||
""")
|
""")
|
||||||
st.info("""
|
st.info("""
|
||||||
- **Player X**: Powered by OpenAI's GPT-4.
|
- **Player X**: Powered by Google's Gemini Flash 2.0.
|
||||||
- **Player O**: Powered by DeepSeek's AI or Google's Gemini (if DeepSeek API key is not provided).
|
- **Player O**: Powered by DeepSeek v3.
|
||||||
- **How to Play**: Enter your API keys in the sidebar, click **Start Game**, and watch the AI battle it out!
|
- **How to Play**: Enter your API keys in the sidebar, click **Start Game**, and watch the AI battle it out!
|
||||||
- **Goal**: The first player to get three of their symbols in a row (horizontally, vertically, or diagonally) wins.
|
- **Goal**: The first player to get three of their symbols in a row (horizontally, vertically, or diagonally) wins.
|
||||||
- **Draw**: If the board fills up without a winner, the game ends in a draw.
|
- **Draw**: If the board fills up without a winner, the game ends in a draw.
|
||||||
|
|
@ -106,7 +106,7 @@ if google_api_key:
|
||||||
if 'openai_api_key' in st.session_state:
|
if 'openai_api_key' in st.session_state:
|
||||||
player_x = Agent(
|
player_x = Agent(
|
||||||
name="Player X",
|
name="Player X",
|
||||||
model=OpenAIChat(id="gpt-4o", temperature=0.1, api_key=st.session_state.openai_api_key),
|
model=Gemini(id="gemini-2.0-flash-exp", api_key=st.session_state.google_api_key),
|
||||||
instructions=[
|
instructions=[
|
||||||
"You are a Tic-Tac-Toe player using the symbol 'X'.",
|
"You are a Tic-Tac-Toe player using the symbol 'X'.",
|
||||||
"Your opponent is using the symbol 'O'. Block their potential winning moves.",
|
"Your opponent is using the symbol 'O'. Block their potential winning moves.",
|
||||||
|
|
@ -133,20 +133,6 @@ if 'openai_api_key' in st.session_state:
|
||||||
],
|
],
|
||||||
markdown=True,
|
markdown=True,
|
||||||
)
|
)
|
||||||
elif 'google_api_key' in st.session_state:
|
|
||||||
player_o = Agent(
|
|
||||||
name="Player O",
|
|
||||||
model=Gemini(id="gemini-1.5-flash", api_key=st.session_state.google_api_key),
|
|
||||||
instructions=[
|
|
||||||
"You are a Tic-Tac-Toe player using the symbol 'O'.",
|
|
||||||
"Your opponent is using the symbol 'X'. Block their potential winning moves.",
|
|
||||||
"Make your move in the format 'row, col' based on the current board state.",
|
|
||||||
"Strategize to win by placing your symbol in a way that blocks your opponent from forming a straight line.",
|
|
||||||
"Do not include any explanations or extra text. Only provide the move.",
|
|
||||||
"Row and column indices start from 0.",
|
|
||||||
],
|
|
||||||
markdown=True,
|
|
||||||
)
|
|
||||||
else:
|
else:
|
||||||
st.warning("Please provide either a DeepSeek API key or a Google API key for Player O.")
|
st.warning("Please provide either a DeepSeek API key or a Google API key for Player O.")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue