diff --git a/week2/community-contributions/boardgame_critique.ipynb b/week2/community-contributions/boardgame_critique.ipynb
index de8ac4a..b72e199 100644
--- a/week2/community-contributions/boardgame_critique.ipynb
+++ b/week2/community-contributions/boardgame_critique.ipynb
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": null,
"id": "768629e6",
"metadata": {},
"outputs": [],
@@ -18,19 +18,10 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": null,
"id": "84a945dc",
"metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "OpenAI API Key exists and begins sk-proj-\n",
- "Google API Key exists and begins AIzaSyCW\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"# Load environment variables in a file called .env\n",
"# Print the key prefixes to help with any debugging\n",
@@ -52,7 +43,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": null,
"id": "ad8ae0b6",
"metadata": {},
"outputs": [],
@@ -67,7 +58,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": null,
"id": "f66cf12f",
"metadata": {},
"outputs": [],
@@ -137,7 +128,7 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"id": "5aa66868",
"metadata": {},
"outputs": [],
@@ -165,7 +156,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"id": "51c9dadc",
"metadata": {},
"outputs": [],
@@ -175,148 +166,25 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"id": "548efb27",
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "* Running on local URL: http://127.0.0.1:7863\n",
- "* To create a public link, set `share=True` in `launch()`.\n"
- ]
- },
- {
- "data": {
- "text/html": [
- "
"
- ],
- "text/plain": [
- ""
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": []
- },
- "execution_count": 23,
- "metadata": {},
- "output_type": "execute_result"
- },
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Journalist:\n",
- "I would like to review the board game Santorini.\n",
- "\n",
- "Critique:\n",
- "Sure, ask me anything about the board game Santorini.\n",
- "\n",
- "\n",
- "\n",
- "***Question 1***\n",
- "\n",
- "\n",
- "Journalist:\n",
- "\n",
- "\n",
- "To start, could you briefly describe the core gameplay and objective of Santorini?\n",
- "\n",
- "\n",
- "Critique:\n",
- "Santorini is an abstract strategy game at its core. Two players compete to be the first to get one of their two pawns to the third level of a tower. Players take turns moving one of their pawns, and then building a block on an adjacent space. The build can be on the same level, one level higher, or down a level. Certain spaces have a dome, which signifies the tower is complete, and no one can build or move to that space.\n",
- "\n",
- "The game's main draw is the use of God Powers, which give each player a unique ability that breaks the standard rules of the game. This adds a significant layer of asymmetry and strategic depth.\n",
- "\n",
- "\n",
- "\n",
- "\n",
- "***Question 2***\n",
- "\n",
- "\n",
- "Journalist:\n",
- "None\n",
- "\n"
- ]
- },
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "Traceback (most recent call last):\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\gradio\\queueing.py\", line 745, in process_events\n",
- " response = await route_utils.call_process_api(\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " ...<5 lines>...\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\gradio\\route_utils.py\", line 354, in call_process_api\n",
- " output = await app.get_blocks().process_api(\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " ...<11 lines>...\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\gradio\\blocks.py\", line 2116, in process_api\n",
- " result = await self.call_function(\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " ...<8 lines>...\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\gradio\\blocks.py\", line 1623, in call_function\n",
- " prediction = await anyio.to_thread.run_sync( # type: ignore\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " fn, *processed_input, limiter=self.limiter\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\anyio\\to_thread.py\", line 56, in run_sync\n",
- " return await get_async_backend().run_sync_in_worker_thread(\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " func, args, abandon_on_cancel=abandon_on_cancel, limiter=limiter\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\anyio\\_backends\\_asyncio.py\", line 2476, in run_sync_in_worker_thread\n",
- " return await future\n",
- " ^^^^^^^^^^^^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\anyio\\_backends\\_asyncio.py\", line 967, in run\n",
- " result = context.run(func, *args)\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\gradio\\utils.py\", line 915, in wrapper\n",
- " response = f(*args, **kwargs)\n",
- " File \"C:\\Users\\Milan Lazic\\AppData\\Local\\Temp\\ipykernel_29732\\641492170.py\", line 14, in run_boardgame_conversation\n",
- " gemini_next = call_boardgame_critique(gpt_messages, gemini_messages)\n",
- " File \"C:\\Users\\Milan Lazic\\AppData\\Local\\Temp\\ipykernel_29732\\2813548043.py\", line 7, in call_boardgame_critique\n",
- " completion = gemini_via_openai_client.chat.completions.create(\n",
- " model=gemini_model,\n",
- " messages=messages\n",
- " )\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\openai\\_utils\\_utils.py\", line 286, in wrapper\n",
- " return func(*args, **kwargs)\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\openai\\resources\\chat\\completions\\completions.py\", line 1147, in create\n",
- " return self._post(\n",
- " ~~~~~~~~~~^\n",
- " \"/chat/completions\",\n",
- " ^^^^^^^^^^^^^^^^^^^^\n",
- " ...<46 lines>...\n",
- " stream_cls=Stream[ChatCompletionChunk],\n",
- " ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " )\n",
- " ^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\openai\\_base_client.py\", line 1259, in post\n",
- " return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls))\n",
- " ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n",
- " File \"c:\\Users\\Milan Lazic\\projects\\llm_engineering\\venv\\Lib\\site-packages\\openai\\_base_client.py\", line 1047, in request\n",
- " raise self._make_status_error_from_response(err.response) from None\n",
- "openai.BadRequestError: Error code: 400 - [{'error': {'code': 400, 'message': 'Unable to submit request because it must include at least one parts field, which describes the prompt input. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini', 'status': 'INVALID_ARGUMENT'}}]\n"
+ "ename": "NameError",
+ "evalue": "name 'gr' is not defined",
+ "output_type": "error",
+ "traceback": [
+ "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
+ "\u001b[31mNameError\u001b[39m Traceback (most recent call last)",
+ "\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 1\u001b[39m\n\u001b[32m----> \u001b[39m\u001b[32m1\u001b[39m view = \u001b[43mgr\u001b[49m.Interface(\n\u001b[32m 2\u001b[39m fn=run_boardgame_conversation,\n\u001b[32m 3\u001b[39m inputs=[gr.Textbox(label=\u001b[33m\"\u001b[39m\u001b[33mInput the name of the board game:\u001b[39m\u001b[33m\"\u001b[39m)],\n\u001b[32m 4\u001b[39m outputs=[gr.Markdown(label=\u001b[33m\"\u001b[39m\u001b[33mConversation:\u001b[39m\u001b[33m\"\u001b[39m)],\n\u001b[32m 5\u001b[39m flagging_mode=\u001b[33m\"\u001b[39m\u001b[33mnever\u001b[39m\u001b[33m\"\u001b[39m\n\u001b[32m 6\u001b[39m )\n\u001b[32m 7\u001b[39m view.launch()\n",
+ "\u001b[31mNameError\u001b[39m: name 'gr' is not defined"
]
}
],
"source": [
+ "# Create a Gradio interface for running boardgame conversations.\n",
+ "# The interface takes the board game name as input and displays the conversation as Markdown.\n",
"view = gr.Interface(\n",
" fn=run_boardgame_conversation,\n",
" inputs=[gr.Textbox(label=\"Input the name of the board game:\")],\n",