Deleted unnecessary files from ai_blackjack_game

This commit is contained in:
Madhu 2025-01-06 18:02:40 +05:30
parent f579d00580
commit 4ac8a46e90
3 changed files with 0 additions and 200 deletions

View file

@ -1,33 +0,0 @@
# AI Blackjack Game
This is a simple blackjack game that uses an AI agents as Player and Dealer to play the game.
### How to get Started?
1. Clone the GitHub repository
```bash
git clone https://github.com/Shubhamsaboo/awesome-llm-apps.git
cd ai_agent_tutorials/ai_blackjack_game
```
2. Install the required dependencies:
```bash
pip install -r requirements.txt
```
3. Get your OpenAI API Key
- Sign up for an [OpenAI account](https://platform.openai.com/) (or the LLM provider of your choice) and obtain your API key.
4. Run the Streamlit App
```bash
streamlit run ai_blackjack_agent.py
```
## Requirements
- autogen
- numpy
- openai
- streamlit

View file

@ -1,163 +0,0 @@
import os
import random
from autogen import ConversableAgent
# Function to get OpenAI API key from user input
def get_openai_api_key():
api_key = input("Please enter your OpenAI API key: ").strip()
if not api_key:
raise ValueError("API key cannot be empty.")
return api_key
# Set OpenAI API key as environment variable
OPENAI_API_KEY = get_openai_api_key()
# Initialize deck
suits = ['Hearts', 'Diamonds', 'Clubs', 'Spades']
ranks = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A']
deck = [{'rank': rank, 'suit': suit} for suit in suits for rank in ranks]
# Function to deal a card
def deal_card(deck):
return deck.pop()
# Function to calculate hand value
def calculate_hand_value(hand):
value = 0
aces = 0
for card in hand:
rank = card['rank']
if rank in ['J', 'Q', 'K']:
value += 10
elif rank == 'A':
value += 11
aces += 1
else:
value += int(rank)
while value > 21 and aces:
value -= 10
aces -= 1
return value
# Define the Player AI using AutoGen
player_ai = ConversableAgent(
"player_ai",
system_message="""
You are the Player AI in a game of Blackjack. Your goal is to maximize your winnings by making strategic decisions.
- You will receive your current hand and the dealer's upcard.
- Decide whether to 'Hit' or 'Stand'.
- Respond with only 'H' for Hit or 'S' for Stand.
""",
llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.2, "api_key": OPENAI_API_KEY}]},
human_input_mode="NEVER",
)
# Define the Dealer AI using AutoGen
dealer_ai = ConversableAgent(
"dealer_ai",
system_message="""
You are the Dealer AI in a game of Blackjack. Follow these rules:
- You will receive your current hand and the player's final hand value.
- Decide whether to 'Hit' or 'Stand' based on the rules of Blackjack.
- You must hit until your hand value is at least 17.
- If your hand value exceeds 21, you bust.
- Respond with only 'H' for Hit or 'S' for Stand.
""",
llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.2, "api_key": OPENAI_API_KEY}]},
human_input_mode="NEVER",
)
# Define the Judge AI using AutoGen
judge_ai = ConversableAgent(
"judge_ai",
system_message="""
You are the Judge AI in a game of Blackjack. You will be provided with the player's final hand and the dealer's final hand.
Your job is to determine the winner based on the rules of Blackjack:
Rules:
- The player with the hand value closest to 21 without exceeding it wins.
- If both players have the same hand value, it's a tie.
- If both players bust (exceed 21), the dealer wins.
Respond with:
- "Player" if the player wins.
- "Dealer" if the dealer wins.
- "Tie" if it's a tie.
""",
llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.2, "api_key": OPENAI_API_KEY}]},
human_input_mode="NEVER",
)
# Function to play a game of Blackjack
def play_blackjack(player_ai, dealer_ai, judge_ai, max_rounds=5):
for round_number in range(1, max_rounds + 1):
print(f"\n--- Round {round_number} ---")
random.shuffle(deck)
player_hand = [deal_card(deck), deal_card(deck)]
dealer_hand = [deal_card(deck), deal_card(deck)]
# Player's turn
while True:
player_value = calculate_hand_value(player_hand)
dealer_upcard = dealer_hand[0]
print(f"Player's Hand: {player_hand} (Value: {player_value})")
print(f"Dealer's Upcard: {dealer_upcard}")
# Player AI decides to Hit or Stand
player_ai_message = f"Your current hand is {player_hand} (Value: {player_value}). Dealer's upcard is {dealer_upcard}. Do you want to Hit or Stand? (H/S)"
player_decision = player_ai.initiate_chat(
dealer_ai,
message=player_ai_message,
max_turns=1,
)
# Extract the Player AI's decision
if player_decision not in ['H', 'S']:
# Fallback decision if response is invalid
player_decision = 'S'
if player_decision == 'H': # Hit
player_hand.append(deal_card(deck))
print(f"Player draws: {player_hand[-1]}")
player_value = calculate_hand_value(player_hand)
if player_value > 21:
print(f"Player Busts! Hand: {player_hand} (Value: {player_value})")
break
elif player_decision == 'S': # Stand
print(f"Player stands with hand: {player_hand} (Value: {player_value})")
break
# Dealer's turn
dealer_value = calculate_hand_value(dealer_hand)
print(f"Dealer reveals hidden card: {dealer_hand[1]}")
print(f"Dealer's Hand: {dealer_hand} (Value: {dealer_value})")
while True:
# Dealer AI decides to Hit or Stand
dealer_ai_message = f"Your current hand is {dealer_hand} (Value: {dealer_value}). The player's final hand value is {player_value}. Do you want to Hit or Stand? (H/S)"
dealer_decision = dealer_ai.initiate_chat(
player_ai, # Communicating with the player AI
message=dealer_ai_message,
max_turns=1,
)
# Extract the Dealer AI's decision
if dealer_decision not in ['H', 'S']:
# Fallback decision if response is invalid
dealer_decision = 'S'
if dealer_decision == 'H':
dealer_hand.append(deal_card(deck))
dealer_value = calculate_hand_value(dealer_hand)
print(f"Dealer draws: {dealer_hand[-1]}")
if dealer_value > 21:
print(f"Dealer Busts! Hand: {dealer_hand} (Value: {dealer_value})")
break
elif dealer_decision == 'S':
print(f"Dealer stands with hand: {dealer_hand} (Value: {dealer_value})")
break
# Judge determines the winner
judge_ai_message = f"Player's final hand: {player_hand} (Value: {player_value}). Dealer's final hand: {dealer_hand} (Value: {dealer_value}). Who wins?"
winner = judge_ai.generate_reply(messages=[{"content": judge_ai_message, "role": "user"}])
print(f"\n{winner} Wins!")
# Run the game
play_blackjack(player_ai, dealer_ai, judge_ai)

View file

@ -1,4 +0,0 @@
autogen
numpy
openai
streamlit