Files
hack/tools/scripts/llm-key-hunter/results/_cache/content/amogh1221_chatbot-intend-based.json

1 line
3.9 KiB
JSON

{"repo": "amogh1221/chatbot-intend-based", "files": {"app.py": {"30037ce49458cbeb7d87b87af3fc00cb9e7a98e3": {"t": 1785674368.6028814, "n": 3568, "h": "e13acbe000c4559b", "c": "import streamlit as st\nimport tensorflow as tf\nimport pickle\nimport json\nimport os\nimport random\nimport requests\nimport time\nfrom dotenv import load_dotenv\nfrom tensorflow.keras.preprocessing.sequence import pad_sequences\n\nload_dotenv()\nOPENROUTER_API_KEY = os.getenv(\"OPENROUTER_API_KEY\")\n\nmodel = tf.keras.models.load_model(\"best_model.keras\")\n\nwith open(\"tokenizer.pkl\", \"rb\") as f:\n tokenizer = pickle.load(f)\n\nwith open(\"label_encoder.pkl\", \"rb\") as f:\n label_encoder = pickle.load(f)\n\nwith open(\"chatbot_dataset.json\", \"r\") as f:\n dataset = json.load(f)\n\nintent_responses = {i[\"tag\"]: i[\"responses\"] for i in dataset[\"intents\"]}\n\nmax_len = 6\n\n\ndef predict_intent(text):\n seq = tokenizer.texts_to_sequences([text.lower()])\n seq = pad_sequences(seq, maxlen=max_len, padding=\"post\")\n pred = model.predict(seq)[0]\n idx = pred.argmax()\n intent = label_encoder.inverse_transform([idx])[0]\n confidence = float(pred[idx])\n return intent, confidence\n\n\ndef deepseek_generate(query, history):\n url = \"https://openrouter.ai/api/v1/chat/completions\"\n \n headers = {\n \"Authorization\": f\"Bearer {OPENROUTER_API_KEY}\",\n \"Content-Type\": \"application/json\"\n }\n\n messages = [\n {\n \"role\": \"system\",\n \"content\": (\n \"You are an AI assistant integrated inside a lightweight chatbot. \"\n \"Your responses must be short, natural, friendly and conversational. \"\n \"Do NOT write long essays unless the user explicitly asks for a long explanation. \"\n \"Never say you are a large language model or advanced AI. \"\n \"Just behave like a normal helpful chat assistant who answers clearly.\"\n )\n }\n ]\n\n for sender, msg in history:\n role = \"user\" if sender == \"user\" else \"assistant\"\n messages.append({\"role\": role, \"content\": msg})\n\n messages.append({\"role\": \"user\", \"content\": query})\n\n data = {\n \"model\": \"deepseek/deepseek-chat\",\n \"messages\": messages,\n }\n\n response = requests.post(url, headers=headers, json=data)\n\n if response.status_code == 200:\n return response.json()[\"choices\"][0][\"message\"][\"content\"]\n\n return f\"API Error: {response.text}\"\n\nst.set_page_config(page_title=\"Chatbot\", layout=\"centered\")\nst.title(\"Chatbot\")\n\nif \"history\" not in st.session_state:\n st.session_state.history = []\n\nif \"just_added\" not in st.session_state:\n st.session_state.just_added = None\n\nuser_input = st.chat_input(\"Say something...\")\n\nif user_input:\n st.session_state.history.append((\"user\", user_input))\n intent, confidence = predict_intent(user_input)\n\n if intent == \"ai_handoff\":\n bot_reply = deepseek_generate(user_input, st.session_state.history)\n else:\n replies = intent_responses.get(intent, [\"I didn't understand that.\"])\n bot_reply = random.choice(replies)\n\n st.session_state.history.append((\"bot\", bot_reply))\n st.session_state.just_added = (\"bot\", bot_reply)\n\nfor sender, msg in st.session_state.history:\n if sender == \"user\":\n st.chat_message(\"user\").write(msg)\n\n else:\n if st.session_state.just_added and msg == st.session_state.just_added[1]:\n placeholder = st.chat_message(\"assistant\").empty()\n full = \"\"\n for word in msg.split():\n full += word + \" \"\n placeholder.write(full)\n time.sleep(0.04)\n st.session_state.just_added = None \n\n else:\n st.chat_message(\"assistant\").write(msg)\n"}}}}