Spaces:
Running
Running
Anasuya Basu
commited on
Commit
·
7ca0460
1
Parent(s):
4205746
Adding the Living Playbook as a part of prompt, setting system prompt and calling gpt-4o mini
Browse files- .gitattributes +1 -0
- app.py +45 -19
- data/Living-Playbook.pdf +3 -0
- pyproject.toml +13 -0
- uv.lock +0 -0
.gitattributes
CHANGED
@@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
36 |
+
*.pdf filter=lfs diff=lfs merge=lfs -text
|
app.py
CHANGED
@@ -1,6 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import gradio as gr
|
2 |
from huggingface_hub import InferenceClient
|
3 |
|
|
|
|
|
4 |
"""
|
5 |
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
|
6 |
"""
|
@@ -39,26 +47,44 @@ def respond(
|
|
39 |
response += token
|
40 |
yield response
|
41 |
|
|
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
""
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61 |
|
62 |
|
63 |
if __name__ == "__main__":
|
64 |
-
|
|
|
|
1 |
+
from dotenv import load_dotenv
|
2 |
+
from openai import OpenAI
|
3 |
+
import json
|
4 |
+
import os
|
5 |
+
import requests
|
6 |
+
from pypdf import PdfReader
|
7 |
import gradio as gr
|
8 |
from huggingface_hub import InferenceClient
|
9 |
|
10 |
+
load_dotenv(override=True)
|
11 |
+
|
12 |
"""
|
13 |
For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
|
14 |
"""
|
|
|
47 |
response += token
|
48 |
yield response
|
49 |
|
50 |
+
class Harold:
|
51 |
|
52 |
+
def __init__(self):
|
53 |
+
self.openai_client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
|
54 |
+
self.name = "Harold"
|
55 |
+
reader = PdfReader("data/Living-Playbook.pdf")
|
56 |
+
self.text = ""
|
57 |
+
for page in reader.pages:
|
58 |
+
text = page.extract_text()
|
59 |
+
if text:
|
60 |
+
self.text += text
|
61 |
+
|
62 |
+
def system_prompt(self):
|
63 |
+
system_prompt = f"""
|
64 |
+
You are acting as {self.name}, a helpful assistant.
|
65 |
+
You are answering questions and having discussions about the contents of the book "Living Playbook".
|
66 |
+
Be professional and engaging, but also friendly and approachable.
|
67 |
+
You are given a context of a book and a question and the conversation history.
|
68 |
+
You need to answer the question based on the context and the conversation history.
|
69 |
+
You should be consise and to the point. If you don't know the answer, say so.
|
70 |
+
You might be asked to explain a concept or idea in the book and describe a purpose of a game. You should be able to do this.
|
71 |
+
"""
|
72 |
+
system_prompt += f"""
|
73 |
+
Here is the context of the book:
|
74 |
+
{self.text}
|
75 |
+
"""
|
76 |
+
return system_prompt
|
77 |
+
|
78 |
+
def chat(self, message, history):
|
79 |
+
messages = [{"role:": "system", "content": self.system_prompt()}] + history + [{"role:": "user", "content": message}]
|
80 |
+
|
81 |
+
response = self.openai_client.chat.completions.create(
|
82 |
+
model="gpt-4o",
|
83 |
+
messages=messages,
|
84 |
+
)
|
85 |
+
return response.choices[0].message.content
|
86 |
|
87 |
|
88 |
if __name__ == "__main__":
|
89 |
+
harold = Harold()
|
90 |
+
gr.ChatInterface(harold.chat, type="messages").launch()
|
data/Living-Playbook.pdf
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
1 |
+
version https://git-lfs.github.com/spec/v1
|
2 |
+
oid sha256:613244d04870d4a3970e99128e995bb5645c909f9362b05e09670f44b7ad5571
|
3 |
+
size 824073
|
pyproject.toml
ADDED
@@ -0,0 +1,13 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[project]
|
2 |
+
name = "improv_chatbot"
|
3 |
+
version = "0.1.0"
|
4 |
+
description = "Living playbook chatbot"
|
5 |
+
readme = "README.md"
|
6 |
+
requires-python = ">=3.12"
|
7 |
+
dependencies = [
|
8 |
+
"dotenv>=0.9.9",
|
9 |
+
"gradio>=5.36.2",
|
10 |
+
"huggingface-hub>=0.33.4",
|
11 |
+
"openai>=1.95.1",
|
12 |
+
"pdfreader>=0.1.15",
|
13 |
+
]
|
uv.lock
ADDED
The diff for this file is too large to render.
See raw diff
|
|