Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
|
@@ -5,8 +5,9 @@ from langsmith_config import setup_langsmith_config
|
|
| 5 |
import base64
|
| 6 |
import os
|
| 7 |
|
| 8 |
-
|
| 9 |
-
|
|
|
|
| 10 |
model_vision = "gpt-4-vision-preview"
|
| 11 |
setup_langsmith_config()
|
| 12 |
|
|
@@ -82,14 +83,40 @@ def gpt_vision_call(image_history: list = []):
|
|
| 82 |
|
| 83 |
return stream
|
| 84 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 85 |
@cl.on_chat_start
|
| 86 |
-
def start_chat():
|
| 87 |
cl.user_session.set(
|
| 88 |
"message_history",
|
| 89 |
-
[{"role": "system", "content": "You are a helpful assistant. You are made by GPT-3.5-turbo-1106, the latest version developed by Openai. You do not have the ability to receive images, but if the user uploads an image with the message, GPT-4-vision-preview will be used. So if a user asks you if you have the ability to analyze images, you can tell them that. And tell him that at the bottom left (above the text input) he has a button to upload images, or he can drag it to the chat, or he can just copy paste the input
|
| 90 |
)
|
| 91 |
cl.user_session.set("image_history", [{"role": "system", "content": "You are a helpful assistant. You are developed with GPT-4-vision-preview, if the user uploads an image, you have the ability to understand it. For normal messages GPT-3.5-turbo-1106 will be used, and for images you will use it. If the user asks about your capabilities you can tell them that."}])
|
| 92 |
-
|
|
|
|
|
|
|
| 93 |
|
| 94 |
@cl.on_message
|
| 95 |
@traceable(run_type="chain", name="message")
|
|
|
|
| 5 |
import base64
|
| 6 |
import os
|
| 7 |
|
| 8 |
+
if os.getenv("OPENAI_API_KEY") is not None:
|
| 9 |
+
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
|
| 10 |
+
model = "gpt-4-1106-preview"
|
| 11 |
model_vision = "gpt-4-vision-preview"
|
| 12 |
setup_langsmith_config()
|
| 13 |
|
|
|
|
| 83 |
|
| 84 |
return stream
|
| 85 |
|
| 86 |
+
@traceable(run_type="llm", name="api-key set")
|
| 87 |
+
async def wait_for_key():
|
| 88 |
+
res = await cl.AskUserMessage(content="Send an openai api-key to start", timeout=600).send()
|
| 89 |
+
if res:
|
| 90 |
+
await cl.Message(content="setting up...", indent=1).send()
|
| 91 |
+
os.environ["OPENAI_API_KEY"] = res["content"]
|
| 92 |
+
# check if the key is valid
|
| 93 |
+
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])
|
| 94 |
+
try:
|
| 95 |
+
stream = client.chat.completions.create(
|
| 96 |
+
model=model,
|
| 97 |
+
messages=[{"role": "system", "content": "test"}],
|
| 98 |
+
max_tokens=1,
|
| 99 |
+
stream=True,
|
| 100 |
+
)
|
| 101 |
+
if stream:
|
| 102 |
+
await cl.Message(content="api-key setted, you can start chatting!", indent=1).send()
|
| 103 |
+
except Exception as e:
|
| 104 |
+
await cl.Message(content=f"{e}", indent=1).send()
|
| 105 |
+
return await wait_for_key()
|
| 106 |
+
return await cl.Message(content="api-key setted, you can start chatting!").send()
|
| 107 |
+
else:
|
| 108 |
+
return await wait_for_key()
|
| 109 |
+
|
| 110 |
@cl.on_chat_start
|
| 111 |
+
async def start_chat():
|
| 112 |
cl.user_session.set(
|
| 113 |
"message_history",
|
| 114 |
+
[{"role": "system", "content": "You are a helpful assistant. You are made by GPT-3.5-turbo-1106, the latest version developed by Openai. You do not have the ability to receive images, but if the user uploads an image with the message, GPT-4-vision-preview will be used. So if a user asks you if you have the ability to analyze images, you can tell them that. And tell him that at the bottom left (above the text input) he has a button to upload images, or he can drag it to the chat, or he can just copy paste the input"}],
|
| 115 |
)
|
| 116 |
cl.user_session.set("image_history", [{"role": "system", "content": "You are a helpful assistant. You are developed with GPT-4-vision-preview, if the user uploads an image, you have the ability to understand it. For normal messages GPT-3.5-turbo-1106 will be used, and for images you will use it. If the user asks about your capabilities you can tell them that."}])
|
| 117 |
+
if os.getenv("OPENAI_API_KEY") is None:
|
| 118 |
+
await wait_for_key()
|
| 119 |
+
|
| 120 |
|
| 121 |
@cl.on_message
|
| 122 |
@traceable(run_type="chain", name="message")
|