Spaces:
Sleeping
Sleeping
import streamlit as st | |
import openai | |
import json | |
openai.api_key = "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" | |
# Thay YOUR_API_KEY bằng API key của bạn | |
st.title("🤖 AI ChatBot") | |
# Tạo hoặc tải lịch sử chat từ file | |
def load_chat_history(): | |
try: | |
with open("chat_history.json", "r") as file: | |
chat_history = json.load(file) | |
except FileNotFoundError: | |
chat_history = [] | |
return chat_history | |
def save_chat_history(chat_history): | |
with open("chat_history.json", "w") as file: | |
json.dump(chat_history, file) | |
# Hàm để tạo phản hồi từ OpenAI API | |
def get_response(prompt, chat_history): | |
chat_history.append({"user": prompt}) | |
response = openai.Completion.create( | |
engine="davinci", | |
prompt=generate_prompt(chat_history), | |
max_tokens=50, | |
temperature=0.7, | |
top_p=1.0, | |
frequency_penalty=0.0, | |
presence_penalty=0.0, | |
) | |
chat_history.append({"bot": response.choices[0].text.strip()}) | |
return chat_history | |
# Hàm để tạo prompt từ lịch sử chat | |
def generate_prompt(chat_history): | |
prompt = "" | |
for i, message in enumerate(chat_history): | |
if "user" in message: | |
prompt += f"User {i+1}: " + message["user"] + "\n" | |
elif "bot" in message: | |
prompt += f"Bot {i+1}: " + message["bot"] + "\n" | |
return prompt | |
# Giao diện chatbot | |
def chatbot(): | |
chat_history = load_chat_history() | |
# Hiển thị lịch sử chat | |
st.subheader("Chat History") | |
for i, message in enumerate(chat_history): | |
if "user" in message: | |
st.text_area(f"User {i+1}:", message["user"], height=100, key=f"user_{i+1}") | |
elif "bot" in message: | |
st.text_area(f"Bot {i+1}:", message["bot"], height=100, key=f"bot_{i+1}") | |
# Gửi và nhận tin nhắn mới | |
st.sidebar.subheader("User Input") | |
user_input = st.sidebar.text_input("User:", "") | |
# Gửi yêu cầu đến OpenAI API và nhận phản hồi | |
if st.sidebar.button("Send"): | |
chat_history = get_response(user_input, chat_history) | |
save_chat_history(chat_history) | |
# Nút Clear để xóa lịch sử chat | |
if st.sidebar.button("Clear"): | |
chat_history = [] | |
save_chat_history(chat_history) | |
chatbot() | |