| import os |
| import random |
| import gradio as gr |
| import openai |
|
|
| team_list=['Ana','Ashe','Baptiste','Bastion','Brigitte','Cassidy','Doomfist','Dva','Echo','Genji','Hanzo','JunkerQueen','Junkrat','Kiriko','Lucio','Mei','Mercy','Moira','Orisa','Pharah','Reaper','Reinhardt','Roadhog','Sigma','Sojourn','Soldier76','Sombra','Symmetra','Torbjorn','Tracer','Widowmaker','Winston','Wrecking Ball','Zarya','Zenyatta','None'] |
|
|
| val_team_list=["Astra", "Breach", "Brimstone", "Chamber", "Cypher", "Jett", "Kay", "Killjoy", "Neon", "Omen", "Phoenix", "Raze", "Reyna", "Sage", "Skye", "Sova", "Viper","Yoru","None"] |
|
|
|
|
| openai.api_key = os.getenv("OPENAI_API_KEY") |
| |
| |
|
|
| def process_squad(Team): |
| if len(Team) == 1: |
| return " "+Team[0] |
| else: |
| constructor = "" |
| for hero in Team: |
| constructor += f' {hero},' |
| constructor = constructor[:-1] |
| return constructor |
|
|
| def chat(Mode, Me, Teammate, Opponents, history): |
| history = history or [] |
| teammate_string = str(Teammate) |
| if not Me or Me=="None": |
| history.append((str(Teammate)+str(Opponents), "Please select the hero you're playing")) |
| return history, history |
| print(Me) |
| message = "Playing Overwatch2 as " + str(Me) |
|
|
| if not Teammate or Teammate == "None": |
| message += ", " |
| else: |
| print(Teammate) |
| message += f' with {teammate_string} on my team, ' |
| if not Opponents: |
| message += "how should we play to win games?" |
| else: |
| message += f' how do we counter{process_squad(Opponents)}?' |
| if Mode == "Bronze": |
| message += " Give sarcastic advice." |
|
|
| response = openai.Completion.create(model="text-davinci-003", prompt=message, temperature=0.7, max_tokens=100)['choices'][0]['text'] |
| index = response.rfind('.') |
| response = response[:index+1] |
| |
| if not Teammate or Teammate == "None": |
| chat_msg = f'{Me} v {",".join(Opponents)}' |
| else: |
| chat_msg = f'{Me},{Teammate} v {",".join(Opponents)}'.lower() |
| print(response) |
| history.append((chat_msg, response)) |
| return history, history |
|
|
| chatbot = gr.Chatbot().style(color_map=("grey", "blue")) |
| chatbot2 = gr.Chatbot().style(color_map=("grey", "red")) |
|
|
| def chat2(Mode,Me, Opponent, history): |
| history = history or [] |
| if not Me or Me=="None": |
| history.append((str(Opponent), "Please select the agent you're playing")) |
| return history, history |
| print(Me) |
| message = "Playing Valorant as " + str(Me) |
|
|
| if not Opponent or Opponent == "None": |
| message += ", give advice on playstle." |
| else: |
| message += f', how do I counter {Opponent}?' |
| if Mode == "Bronze": |
| message += " Give sarcastic advice." |
| response = openai.Completion.create(model="text-davinci-003", prompt=message, temperature=0.65, max_tokens=100)['choices'][0]['text'] |
| |
| history.append((f'{Me} v {Opponent}', response)) |
| return history, history |
|
|
| chatbot = gr.Chatbot().style(color_map=("grey", "blue")) |
|
|
| demo1 = gr.Interface( |
| chat, |
| [ |
| gr.Radio(["Normal", "Bronze"],value="Normal"), |
| gr.Dropdown(team_list), |
| gr.Dropdown(team_list), |
| gr.Dropdown(team_list, value=[team_list[random.randint(1,30)]], multiselect=True), |
| |
| "state" |
| ], |
| [chatbot, "state"], |
| allow_flagging="never", |
| |
| description="Please select the hero you play. Choose less than two other heroes for best advice.", |
| css="footer {visibility: hidden}" |
| ) |
|
|
| demo2 = gr.Interface( |
| chat2, |
| [ |
| gr.Radio(["Normal", "Bronze"],value="Normal"), |
| gr.Dropdown(val_team_list, value=[]), |
| gr.Dropdown(val_team_list, value=[val_team_list[random.randint(1,12)]]), |
| "state" |
| ], |
| [chatbot2, "state"], |
| allow_flagging="never", |
| css="footer {visibility: hidden}" |
| ) |
| demo = gr.TabbedInterface([demo1, demo2], ["Overwatch 2 Coach", "Valorant Coach"],title="GPT-3 Coaching 🤖",css="footer {visibility: hidden}") |
| |
| demo.launch() |
|
|