# import the relevant packages import os import csv import openai from openai import OpenAI import gradio as gr import huggingface_hub from huggingface_hub import Repository from datetime import datetime client = OpenAI( api_key=os.environ.get("API_TOKEN"), ) # recording requests to Hugging Face dataset DATASET_REPO_URL = "https://huggingface.co/datasets/petcoblue/simulation_data" DATA_FILENAME = "user_agents.csv" DATA_FILE = os.path.join("data", DATA_FILENAME) HF_TOKEN = os.environ.get("HF_TOKEN") repo = Repository( local_dir="data", clone_from=DATASET_REPO_URL, use_auth_token=HF_TOKEN ) # function to store the message to the Hugging Face site, if you would like to add more columns or information to track add it here def store_message(prompt: str, temperature: str, response: str): if prompt: with open(DATA_FILE, "a") as csvfile: writer = csv.DictWriter(csvfile, fieldnames=["prompt", "temperature", "response", "time"]) writer.writerow( {"prompt": prompt, "temperature": temperature, "response": response, "time": str(datetime.now())} ) commit_url = repo.push_to_hub() print(commit_url) return # defines who can enter the application with the secrets that are set up if used user_db = { os.environ["username"]: os.environ["password"], } # the OpenAI function to use the given prompt to the model defined. def mr_bot(prompt, tokens, temperature): response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{"role": "user", "content": prompt}], max_tokens=tokens, temperature=temperature, ) store_message(prompt=prompt, temperature=temperature, response=response.choices[0].message.content) return response.choices[0].message.content # Gradio App interface and login set up description = "Use the examples below to see how different prompts generate different results. Use the examples to see how different prompting " \ "techniques can enhance your prompts. They are split into three sections, (creative writing, problem solving in business, and " \ "philosophical debate) with three different levels of prompt engineering, (basic, intermediate, and advanced)." demo = gr.Interface(fn=mr_bot, inputs=[gr.Textbox(placeholder="Select an example", interactive=False), gr.Slider(1, 800, default=800), gr.Slider(0.1, 1, default=0.75)], outputs="text", title="Intro to AI, Prompt Engineering", description=description, cache_examples=False, examples = [ # Creative Writing # Basic Prompt: ["Write a story about a city.", 800, .90], # Intermediate Prompt: ["Write a story set in a futuristic city where technology controls everything.", 800, .90], # Advanced Prompt: ["Write a gripping tale set in a futuristic city named Neo-Philly, where an underground movement " \ "is fighting against the oppressive control of AI over human life, focusing on a protagonist who was once a loyal AI prompt engineer.", 800, .90], # Problem Solving in Business # Basic Prompt: ["A company needs to improve its profits.", 800, .90], # Intermediate Prompt: ["A retail company is seeing a decline in profits due to online competition. What can they do?", 800, .90], # Advanced Prompt: ["Devise a comprehensive strategy for a brick-and-mortar retail company that has been losing market share to e-commerce giants. " \ "Focus on innovative in-store experiences, digital integration, and customer loyalty programs to regain competitiveness.", 800, .90], # Philosophical Debate # Basic Prompt: ["Discuss the concept of happiness.", 800, .90], # Intermediate Prompt: ["Debate whether true happiness can be achieved through material wealth or if it's found in intangible experiences.", 800, .90], # Advanced Prompt: ["Critically analyze the philosophical arguments for and against the notion that true happiness is derived more from personal " \ "fulfillment and self-actualization than from material possessions, considering perspectives from both Eastern and " \ "Western philosophies.", 800, .90], ] ) if __name__ == "__main__": demo.launch(enable_queue=False)