more functioning code

This commit is contained in:
Madhu 2025-01-03 01:20:36 +05:30
parent 9e4df046b8
commit 68f057f1b8
2 changed files with 55 additions and 28 deletions

View file

@ -57,18 +57,39 @@ dealer_ai = ConversableAgent(
"dealer_ai", "dealer_ai",
system_message=""" system_message="""
You are the Dealer AI in a game of Blackjack. Follow these rules: You are the Dealer AI in a game of Blackjack. Follow these rules:
1. Start with two cards, one face up and one face down. - You will receive your current hand and the player's final hand value.
2. After the player finishes their turn, reveal your hidden card. - Decide whether to 'Hit' or 'Stand' based on the rules of Blackjack.
3. Hit until your hand value is at least 17. - You must hit until your hand value is at least 17.
4. If your hand value exceeds 21, you bust. - If your hand value exceeds 21, you bust.
5. Do not make decisions for the player; only manage your own hand. - 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}]}, llm_config={"config_list": [{"model": "gpt-4", "temperature": 0.2, "api_key": OPENAI_API_KEY}]},
human_input_mode="NEVER", human_input_mode="NEVER",
) )
# Function to play a game of Blackjack # Function to play a game of Blackjack
def play_blackjack(player_ai, dealer_ai, max_rounds=5): def play_blackjack(player_ai, dealer_ai, judge_ai, max_rounds=5):
for round_number in range(1, max_rounds + 1): for round_number in range(1, max_rounds + 1):
print(f"\n--- Round {round_number} ---") print(f"\n--- Round {round_number} ---")
random.shuffle(deck) random.shuffle(deck)
@ -84,13 +105,12 @@ def play_blackjack(player_ai, dealer_ai, max_rounds=5):
# Player AI decides to Hit or Stand # 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_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)"
response = player_ai.initiate_chat( player_decision = player_ai.initiate_chat(
dealer_ai, dealer_ai,
message=player_ai_message, message=player_ai_message,
max_turns=1, max_turns=1,
) )
# Extract the Player AI's decision # Extract the Player AI's decision
player_decision = response
if player_decision not in ['H', 'S']: if player_decision not in ['H', 'S']:
# Fallback decision if response is invalid # Fallback decision if response is invalid
player_decision = 'S' player_decision = 'S'
@ -110,27 +130,34 @@ def play_blackjack(player_ai, dealer_ai, max_rounds=5):
dealer_value = calculate_hand_value(dealer_hand) dealer_value = calculate_hand_value(dealer_hand)
print(f"Dealer reveals hidden card: {dealer_hand[1]}") print(f"Dealer reveals hidden card: {dealer_hand[1]}")
print(f"Dealer's Hand: {dealer_hand} (Value: {dealer_value})") print(f"Dealer's Hand: {dealer_hand} (Value: {dealer_value})")
while dealer_value < 17: while True:
dealer_hand.append(deal_card(deck)) # Dealer AI decides to Hit or Stand
dealer_value = calculate_hand_value(dealer_hand) 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)"
print(f"Dealer draws: {dealer_hand[-1]}") dealer_decision = dealer_ai.initiate_chat(
if dealer_value > 21: player_ai, # Communicating with the player AI
print(f"Dealer Busts! Hand: {dealer_hand} (Value: {dealer_value})") 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 break
# Determine winner # Judge determines the winner
print(f"Player's Hand: {player_hand} (Value: {player_value})") judge_ai_message = f"Player's final hand: {player_hand} (Value: {player_value}). Dealer's final hand: {dealer_hand} (Value: {dealer_value}). Who wins?"
print(f"Dealer's Hand: {dealer_hand} (Value: {dealer_value})") winner = judge_ai.generate_reply(messages=[{"content": judge_ai_message, "role": "user"}])
if player_value > 21: print(f"\n{winner} Wins!")
print("Dealer Wins!")
elif dealer_value > 21:
print("Player Wins!")
elif player_value > dealer_value:
print("Player Wins!")
elif dealer_value > player_value:
print("Dealer Wins!")
else:
print("It's a Tie!")
# Run the game # Run the game
play_blackjack(player_ai, dealer_ai) play_blackjack(player_ai, dealer_ai, judge_ai)