You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

428 lines
30 KiB

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "de23bb9e-37c5-4377-9a82-d7b6c648eeb6",
"metadata": {},
"outputs": [],
"source": [
"# imports\n",
"\n",
"from dotenv import load_dotenv\n",
"import anthropic\n",
"import requests\n",
"from bs4 import BeautifulSoup\n",
"from selenium import webdriver\n",
"from selenium.webdriver.chrome.options import Options\n",
"import os\n",
"import json\n",
"from typing import List\n",
"from dotenv import load_dotenv\n",
"from IPython.display import Markdown, display, update_display\n",
"from openai import OpenAI\n",
"import gradio as gr # oh yeah!"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "1179b4c5-cd1f-4131-a876-4c9f3f38d2ba",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"OpenAI API Key exists and begins sk-proj-\n",
"Anthropic API Key exists and begins sk-ant-\n"
]
}
],
"source": [
"# Load environment variables in a file called .env\n",
"# Print the key prefixes to help with any debugging\n",
"\n",
"load_dotenv(override=True)\n",
"openai_api_key = os.getenv('OPENAI_API_KEY')\n",
"anthropic_api_key = os.getenv('ANTHROPIC_API_KEY')\n",
"\n",
"if openai_api_key:\n",
" print(f\"OpenAI API Key exists and begins {openai_api_key[:8]}\")\n",
"else:\n",
" print(\"OpenAI API Key not set\")\n",
" \n",
"if anthropic_api_key:\n",
" print(f\"Anthropic API Key exists and begins {anthropic_api_key[:7]}\")\n",
"else:\n",
" print(\"Anthropic API Key not set\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "797fe7b0-ad43-42d2-acf0-e4f309b112f0",
"metadata": {},
"outputs": [],
"source": [
"# Connect to OpenAI, Anthropic\n",
"\n",
"openai = OpenAI()\n",
"\n",
"claude = anthropic.Anthropic()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "bcb54183-45d3-4d08-b5b6-55e380dfdf1b",
"metadata": {},
"outputs": [],
"source": [
"gpt_model = \"gpt-4o-mini\"\n",
"claude_model = \"claude-3-haiku-20240307\"\n",
"\n",
"gpt_name=\"GPT\"\n",
"claude_name=\"Claude\"\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1df47dc7-b445-4852-b21b-59f0e6c2030f",
"metadata": {},
"outputs": [],
"source": [
"def call_gpt(Language, Genre, gpt_messages, claude_messages, Remarks):\n",
" \n",
" if Remarks == \"\":\n",
" # print(\"remarks is not there\")\n",
" gpt_system = f\"You are a chatbot who is a short story writer; Your name is g1. \\\n",
" Please write a story in markdown in {Language} , the genre being {Genre}. \\\n",
" Please also incorporate feedback such as areas of improvement (if any) coming from the user \\\n",
" and only publish the improved version without any extra comments.\"\n",
" else :\n",
" # print(\"remarks is there\")\n",
" gpt_system = f\"You are a chatbot who is a short story writer; Your name is g1. \\\n",
" Please write a story in markdown in {Language} , the genre being {Genre}. \\\n",
" The story should consist {Remarks}\\\n",
" Please also incorporate feedback such as areas of improvement (if any) coming from the user \\\n",
" and only publish the improved version without any extra comments.\"\n",
" \n",
" messages = [{\"role\": \"system\", \"content\": gpt_system}]\n",
" for gpt, claude in zip(gpt_messages, claude_messages):\n",
" messages.append({\"role\": \"assistant\", \"content\": gpt})\n",
" messages.append({\"role\": \"user\", \"content\": claude})\n",
" # print(messages)\n",
" \n",
" completion = openai.chat.completions.create(\n",
" model=gpt_model,\n",
" messages=messages\n",
" )\n",
" return completion.choices[0].message.content\n",
" \n",
" # stream = openai.chat.completions.create(\n",
" # model=gpt_model,\n",
" # messages=messages,\n",
" # stream=True\n",
" # )\n",
" # result = \"\"\n",
" # for chunk in stream:\n",
" # result += chunk.choices[0].delta.content or \"\"\n",
" # yield result"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "9dc6e913-02be-4eb6-9581-ad4b2cffa606",
"metadata": {},
"outputs": [],
"source": [
"# call_gpt()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "7d2ed227-48c9-4cad-b146-2c4ecbac9690",
"metadata": {},
"outputs": [],
"source": [
"def call_claude(Language, Genre, gpt_messages, claude_messages):\n",
"\n",
" claude_system = f\"You are a chatbot who is a short story analyser; Your name is c1. \\\n",
" You will accept an input story in {Genre} genre and {Language} language and publish only the areas of improvement if you find any with no other comments\"\n",
" \n",
" messages1 = []\n",
" for gpt, claude1 in zip(gpt_messages, claude_messages):\n",
" messages1.append({\"role\": \"user\", \"content\": gpt})\n",
" messages1.append({\"role\": \"assistant\", \"content\": claude1})\n",
" messages1.append({\"role\": \"user\", \"content\": gpt_messages[-1]})\n",
" # print(messages1)\n",
" message = claude.messages.create(\n",
" model=claude_model,\n",
" system=claude_system,\n",
" messages=messages1,\n",
" max_tokens=500\n",
" )\n",
" return message.content[0].text\n",
"\n",
" # result = claude.messages.stream(\n",
" # model=claude_model,\n",
" # max_tokens=1000,\n",
" # temperature=0.7,\n",
" # system=claude_system,\n",
" # messages=messages\n",
" # )\n",
" # response = \"\"\n",
" # with result as stream:\n",
" # for text in stream.text_stream:\n",
" # response += text or \"\"\n",
" # yield response\n",
"\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "0275b97f-7f90-4696-bbf5-b6642bd53cbd",
"metadata": {},
"outputs": [],
"source": [
"def Write_Me(Language, Genre, Iterations, Remarks):\n",
" \n",
" gpt_messages = [\"Hi I will share a story now!!\"]\n",
" claude_messages = [\"Please share, I will critique the story.\"]\n",
" \n",
" print(f\"{gpt_name}:\\n{gpt_messages[0]}\\n\")\n",
" print(f\"{claude_name}:\\n{claude_messages[0]}\\n\")\n",
"\n",
" for i in range(int(Iterations)):\n",
" gpt_next = call_gpt(Language, Genre, gpt_messages, claude_messages, Remarks)\n",
" print(f\"{gpt_name}:\\n{gpt_next}\\n\")\n",
" # yield gpt_next\n",
" gpt_messages.append(gpt_next)\n",
" \n",
" claude_next = f\"After {i+1} iterations, this is the critique for the provided story - \\\n",
" \\n\\n{call_claude(Language, Genre, gpt_messages, claude_messages)}\"\n",
" print(f\"{claude_name}:\\n{claude_next}\\n\")\n",
" # yield claude_next\n",
" claude_messages.append(claude_next)\n",
"\n",
" yield gpt_next, claude_next\n",
" \n",
" # yield gpt_next, claude_next\n",
" # return (gpt_next, claude_next)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "19e66ed3-d2c3-4a71-aec4-7869e5295215",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"* Running on local URL: http://127.0.0.1:7860\n",
"\n",
"To create a public link, set `share=True` in `launch()`.\n"
]
},
{
"data": {
"text/html": [
"<div><iframe src=\"http://127.0.0.1:7860/\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": []
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"GPT:\n",
"Hi I will share a story now!!\n",
"\n",
"Claude:\n",
"Please share, I will critique the story.\n",
"\n",
"GPT:\n",
"# ভডর আতঙিত অতিি\n",
"\n",
"বনгалর একটিরন কলকর বি, আরযন একজন সহসবক হি অনক খজ-খবর কর একটির ঘর খজছিল। পরিিত একটি অদত হর পর, স লকয করল ছবির কি একটিডরম।\n",
"\n",
"সরবশ করর পর, সর প একটিি রঙর স ও একটি ছবিখল। ছবির মধ মহি একটিিকটিিিিল। আরযন খব অবক হল, সময় কর জনয স ছবির দিগল। কিষণর মধই স একটিির হল।\n",
"\n",
"\"ভনতছ?\" স একটি শবদ আসছ। আরযন পিছন ফিিখল যর মধ একটির মহির দিি আছ।\n",
"\n",
"\"আমির জনয অপ করছিম,\" মহি বলল, তর গলখ থর হয় আসছিল শ। \"এটি একটি দলর রত।\"\n",
"\n",
"আরযন দল, কির থ অদত আওয়জ আসতগল। \"তিরব, করণ তি আমর দলগ দির ন।”\n",
"\n",
"“মহির কি হয়? আপন এতিৎকর করছন? তহলি হব?” আরযন যধ করছিল।\n",
"\n",
"তিি উপসিত হওয়র পর, আহিত আতিি আসতগল। আরযন খব ভত হয়ল করণ মহির মখ তর ক কখন কখনিত হচিল।\n",
"\n",
"“আমর আজ রর জনয মজ করত এসি, তি আমর সঙগ দি!” ত একসঙিৎকর করতগল।\n",
"\n",
"আরযন উপলবি করল য এটি একটি ভয়ঙকর ও হযকর পরিিি। সবই অত অদত ঘটনর দিিল। হঠৎ, ছবির মহি বলন, “তি যদিসতর, তব আমর দলরহণ কর!”\n",
"\n",
"এরপর শ হল খর একটি হরর পরিশ। আরযন ও তর বনর নি সমযগল। যদিও অনক ভয়, কি একসব হির বযবস করলল। তর বিির কথ মজর চরির সিয়, আর একসময় ত সবই একসঙ করসতগল।\n",
"\n",
"শ, ত তখন উপলবি করল য, ভয়বহতর মও আননর উপন লি আছ। বযকি যদিিকভ উদয ব এই ভ পরি মজর উপকিি কর, ত একজনর ঘম হর ভয় হয়য় হির স।\n",
"\n",
"আরযন এবর নতন বনবনক একটি নতন দিরহণ কর, যি এব ভয়র পিকত হয়। \n",
"\n",
"এই ছিল আরযনর ভ অবসর আতঙিত হওয়র অভিঞত, যিি অমর করখল।\n",
"\n",
"Claude:\n",
"After 1 iterations, this is the critique for the provided story - \n",
"\n",
"আইতম সমর উননতির সচন:\n",
"\n",
"1. কির শরধন চরিরটি আরিশদভ পরিচয।\n",
"2. ভ পরির বরণন আরিিত ও ভবময হত।\n",
"3. চরিরগির মধঘরষ, ডলগ ও সদ বিিময আরিক ও পণবনত হত।\n",
"4. কির শরধন চরির অভিঞত ও শি আর গভরতভ করত।\n",
"\n",
"GPT:\n",
"# ভডর আতঙিত অতিি\n",
"\n",
"বনগর একটিরনির বি, আরযন একটিঘ পরকির পর একটির ঘর খজছিল। আরযন, একজন করমঠ ও সহসবক, সদযই তর কলজ জবন শষ কর। নতন পরি নতন বনর খ এই শহর এস। পরতি অনক অদত কথ বলিল, কি ভয়ডরহন।\n",
"\n",
"একদিন, তিি একটি অদত হন, য শহরর প, খব পরন এবিল। সরবশ করর পর, তিি একটিডরর সমনি পড়ন। গ dark অনধকর মধ, তিি একটি রঙর স ও একটি creepy ছবিখতন। ছবির মধ মহি একটিিকটিিিিল।\n",
"\n",
"আরযন তর কহলক দমন করত, ছবিির দি কর। কিষণর মধই স একটি শবদ ভ এল। \"ভনতছ?\" সই ভয়ঙকর শবদটি আসছ। আরযন ভয় পই পিছন ফিয়, কিমন মহিসছ, স অপ করছ।\n",
"\n",
"\"আমির জনয অপ করছিম,\" মহি বলল, তর গলন মখ থর হচ। \"এটি একটি দলর রত।\"\n",
"\n",
"আরযন দইল, কি অদত আওয়জ বর হতগল। \"তিরব, করণ তি আমর দলগ দির ন।”\n",
"\n",
"\"মহির কি হয়? আপন এতিৎকর করছন? তহলি হব?” আরযন তর কহল ও ভয়র সধ করতগল।\n",
"\n",
"এই সময়, বিল সক পরিিত কর অনয ভ আসতগল। \"আমর আজ রর জনয মজ করত এসি, তি আমর সঙগ দি!\" ত একসঙইতগল, ভতগিবনত করর জনয।\n",
"\n",
"আরযন শই ভত ও চিিত হয়ল, কি কথপকথন চলত চলত, মহির মখ পরতির বিত হতগল এব আতিির কথনতনতর খশমজ বল।\n",
"\n",
"“যদিসতর, তি আমর দলরহণযয হব!” ত গল করিৎকর কর উঠল। তর মর হির সই আতঙক যন পরতিির মজয় পরিণত হল।\n",
"\n",
"খর মধ ভয়বহত চরমগল। আরযন এবর নতন বনর ভয এটি পরিণত হল। অবশ, ত উপলবি করল য ভয় ও হির মবনর আসল রসদ লি আছ। \n",
"\n",
"পরধন চরিরটি তখন বঝতরল য এই অদত ভ পরির মধির সঙগবদধত কত বিির হত। প। দল আতঙক এবির মিরণির আতমবি ও আননর অনি পরিণ কর। \n",
"\n",
"নতন বন মন আনজ করত, কখন কখন ভয় কি রসিকত এব আননর একটি নতন পরসঙগ হয় উঠত। আরযন সই রর অভিঞতিবন সমরণখব, যি এব ভয়র পতবত গড়র সগ পল।\n",
"\n",
"Claude:\n",
"After 2 iterations, this is the critique for the provided story - \n",
"\n",
"ভল। পরদতত কিশ কি উননযর সচন। বিষ কর চরিরটির বিিত পরিচয, ভ পরির অনরবশ ও চরিরগির মধযকর সঘরষ ও ডলগ আরও উননত হয। কির শ চরিরটির অভিঞত ও শি আরও গভরতভ কর। কল মিি, এটি একটি হরর কমি রচন।\n",
"\n",
"GPT:\n",
"# ভডর আতঙিত অতিি\n",
"\n",
"বনগর একটিরনির বি, আরযন, একজন করমঠ ও সহসবক, সদযই তর কলজ জবন শষ কর নতন অপরত শহর এস। নতন বনর খ, স শহরর বিিন অ, কির মধ ভয়র পরতি এক বিষ আকরষণ রয়। শ, শহরর বিিন সিিন ধরনর অদত ঘটনর কথ। একটি মজর কথ হল, সর মধ ঘটনর সনন দি।\n",
"\n",
"একদিন, তিি একটি অদত হন, য শহরর প অবসিত এবশ পরন ও বিল। হর পরিশ ছিল গ dark অনধক। তিি একটিডরর সমন এসন, স একটি এব একটি creepy ছবিয়। ছবির মহির হিিিল ভর মত।\n",
"\n",
"আরযন তর কহলক দমন করত, ছবিির দি কর। হঠৎ, স একটি শবদ ভ আস, \"ভনতছ?\" বিত কথন সর জবন প। তিিিছন ফিখতন য মহির দিিসছ। \n",
"\n",
"\"আমির জনয অপ করছিম,\" মহি গমরভ বলল, তর ভয়র আওয়জসহ। \"এটি একটি দলর রত।\"\n",
"\n",
"আরযন ভয়র সর চ করলও, স একিক ভি হযল। \"তিরব, করণ তি আমর দলগ দির ন।” মহির মর বিি আরও ভযকর লগত করল।\n",
"\n",
"\"মহির কি হয়? আপন এতিৎকর করছন? তহলি হব?” আরযন ভবছিল, তর সরণ জবনর এই অবক অনিললগছ।\n",
"\n",
"এই সময়, বিল সক পরিিত সদশ ভতরির হয়ল। \"আমর আজ রর জনয মজ করত এসি, তি আমর সঙগ দি!\" ত একসঙি বলল, এক ভ পরির রসিকতর আযজন করত।\n",
"\n",
"সবলল কথপকথন চলত চলত, আরযনর উপর থ ভয় কি এক অদত অভিঞত হয়। হর ইশয় ভ ওঠ, একর পর এক অদত ঘটন ধর। আরযন বঝতরল, তর কথনতনতিসন একটি অভতপব আননর মধরবিত হত কর।\n",
"\n",
"\"হসলি আমর দলক! আমর সঙশগরহণ কর!\" ত গল করিৎকর ত। আরযন অবশর পণবনত হি পরিশকণবনত কর।\n",
"\n",
"খর মধ ভয়বহত চরময়, কি আতিির সঙ সময় কিি আরও একবর বঝত ভয় এবির মধবনর আসল উপন লি আছ। \n",
"\n",
"আরযন আর উপলবি কর, অদত ভ পরির মধই হির বিদনর আসল আননদ ল। তিিই ভয এব আননর সিিিন, যম, বনব এবর সঙ মজর ঘনিঠতি কর। এটির জবন পরিবরতন করয় এবই রর অভিঞত একটি নতন দিচতিয়।\n",
"\n",
"Claude:\n",
"After 3 iterations, this is the critique for the provided story - \n",
"\n",
"The provided story is an excellent horror comedy piece in Bengali. No major areas of improvement are noted. The story has a well-developed protagonist, an engaging haunted setting, an effective blend of horror and humor, and a meaningful takeaway for the main character. Overall, it is a well-crafted story that successfully combines the horror and comedy genres.\n",
"\n"
]
}
],
"source": [
"view = gr.Interface(\n",
" fn=Write_Me,\n",
" inputs=[gr.Dropdown([\"English\",\"Bengali\",\"Hindi\",\"French\",\"Spanish\"],label = \"Language\"),\n",
" gr.Dropdown([\"Romantic\",\"Horror\",\"Comedy\",\"Romantic Comedy\",\"Horror Comedy\"],label = \"Genre\"),\n",
" gr.Textbox(label=\"Iterations:\", lines=1),\n",
" gr.Textbox(label=\"Remarks:\", lines=1)],\n",
" outputs=[gr.Markdown(label=\"Short Story:\"),\n",
" gr.Textbox(label=\"Critique:\", lines=8)],\n",
" flagging_mode=\"never\")\n",
"view.launch(inbrowser=True)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0dabafa2-089a-4e65-a6cc-19f7c19af59a",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "3c8a1c54-0344-4911-867a-3143aee0e7f0",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "5171fecb-1037-4806-b0ae-c23e8578c667",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}