IAMTFRMZA commited on
Commit
c645389
·
verified ·
1 Parent(s): 555e200

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +70 -66
app.py CHANGED
@@ -2,9 +2,10 @@ import streamlit as st
2
  from openai import OpenAI
3
  import time
4
  import datetime
 
5
 
6
- # Set your API key as a variable (securely from env in HF or paste here)
7
- openai_key = "YOUR_OPENAI_API_KEY_HERE"
8
 
9
  st.set_page_config(page_title="Carfind.co.za AI Assistant")
10
 
@@ -32,67 +33,70 @@ else:
32
  st.success("Chat history cleared.")
33
 
34
  # Initialize OpenAI client
35
- client = OpenAI(api_key=openai_key)
36
-
37
- ASSISTANT_ID = "asst_5gQR21fOsmHil11FGBzEArA7"
38
-
39
- # Initialize session state for chat history
40
- if "messages" not in st.session_state:
41
- st.session_state["messages"] = []
42
-
43
- # Display chat history
44
- for message in st.session_state.messages:
45
- role, content = message["role"], message["content"]
46
- st.chat_message(role).write(content)
47
-
48
- # Helper function to save chat transcripts (not displayed, backend only)
49
- def save_transcript(messages):
50
- with open("chat_logs.txt", "a") as f:
51
- f.write(f"\n--- New Chat ({datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) ---\n")
52
- for msg in messages:
53
- f.write(f"{msg['role'].capitalize()}: {msg['content']}\n")
54
- f.write("--- End Chat ---\n")
55
-
56
- # Process user input
57
- if prompt := st.chat_input("Type your message here..."):
58
- st.session_state.messages.append({"role": "user", "content": prompt})
59
- st.chat_message("user").write(prompt)
60
-
61
- try:
62
- # Create a new thread
63
- thread = client.beta.threads.create()
64
- thread_id = thread.id
65
-
66
- # Send user message
67
- client.beta.threads.messages.create(
68
- thread_id=thread_id,
69
- role="user",
70
- content=prompt
71
- )
72
-
73
- # Run assistant
74
- run = client.beta.threads.runs.create(
75
- thread_id=thread_id,
76
- assistant_id=ASSISTANT_ID
77
- )
78
-
79
- # Wait for completion
80
- while True:
81
- run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
82
- if run_status.status == "completed":
83
- break
84
- time.sleep(1)
85
-
86
- # Get assistant response
87
- messages = client.beta.threads.messages.list(thread_id=thread_id)
88
- assistant_message = messages.data[0].content[0].text.value
89
-
90
- # Display and store response
91
- st.chat_message("assistant").write(assistant_message)
92
- st.session_state.messages.append({"role": "assistant", "content": assistant_message})
93
-
94
- # Save conversation transcript silently
95
- save_transcript(st.session_state.messages)
96
-
97
- except Exception as e:
98
- st.error(f"Error: {str(e)}")
 
 
 
 
2
  from openai import OpenAI
3
  import time
4
  import datetime
5
+ import os
6
 
7
+ # Get OpenAI API key from Hugging Face secret environment variable
8
+ openai_key = os.getenv("openai_key")
9
 
10
  st.set_page_config(page_title="Carfind.co.za AI Assistant")
11
 
 
33
  st.success("Chat history cleared.")
34
 
35
  # Initialize OpenAI client
36
+ if not openai_key:
37
+ st.error("OpenAI key not found. Please make sure it is set as a secret variable in Hugging Face.")
38
+ else:
39
+ client = OpenAI(api_key=openai_key)
40
+
41
+ ASSISTANT_ID = "asst_5gQR21fOsmHil11FGBzEArA7"
42
+
43
+ # Initialize session state for chat history
44
+ if "messages" not in st.session_state:
45
+ st.session_state["messages"] = []
46
+
47
+ # Display chat history
48
+ for message in st.session_state.messages:
49
+ role, content = message["role"], message["content"]
50
+ st.chat_message(role).write(content)
51
+
52
+ # Helper function to save chat transcripts (not displayed, backend only)
53
+ def save_transcript(messages):
54
+ with open("chat_logs.txt", "a") as f:
55
+ f.write(f"\n--- New Chat ({datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}) ---\n")
56
+ for msg in messages:
57
+ f.write(f"{msg['role'].capitalize()}: {msg['content']}\n")
58
+ f.write("--- End Chat ---\n")
59
+
60
+ # Process user input
61
+ if prompt := st.chat_input("Type your message here..."):
62
+ st.session_state.messages.append({"role": "user", "content": prompt})
63
+ st.chat_message("user").write(prompt)
64
+
65
+ try:
66
+ # Create a new thread
67
+ thread = client.beta.threads.create()
68
+ thread_id = thread.id
69
+
70
+ # Send user message
71
+ client.beta.threads.messages.create(
72
+ thread_id=thread_id,
73
+ role="user",
74
+ content=prompt
75
+ )
76
+
77
+ # Run assistant
78
+ run = client.beta.threads.runs.create(
79
+ thread_id=thread_id,
80
+ assistant_id=ASSISTANT_ID
81
+ )
82
+
83
+ # Wait for completion
84
+ while True:
85
+ run_status = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
86
+ if run_status.status == "completed":
87
+ break
88
+ time.sleep(1)
89
+
90
+ # Get assistant response
91
+ messages = client.beta.threads.messages.list(thread_id=thread_id)
92
+ assistant_message = messages.data[0].content[0].text.value
93
+
94
+ # Display and store response
95
+ st.chat_message("assistant").write(assistant_message)
96
+ st.session_state.messages.append({"role": "assistant", "content": assistant_message})
97
+
98
+ # Save conversation transcript silently
99
+ save_transcript(st.session_state.messages)
100
+
101
+ except Exception as e:
102
+ st.error(f"Error: {str(e)}")