junaid17 commited on
Commit
5cf14b7
Β·
verified Β·
1 Parent(s): 2f184e5

Delete chatbot.py

Browse files
Files changed (1) hide show
  1. chatbot.py +0 -152
chatbot.py DELETED
@@ -1,152 +0,0 @@
1
-
2
- from typing import TypedDict, Annotated
3
- from langchain_core.messages import (
4
- BaseMessage,
5
- SystemMessage
6
- )
7
- from langgraph.checkpoint.memory import MemorySaver
8
- from tools import retriever, create_rag_tool, arxiv_search, calculator, get_stock_price, wikipedia_search, tavily_search, convert_currency, unit_converter, get_news, get_joke, get_quote, get_weather
9
- from langchain_openai import ChatOpenAI
10
- from langgraph.graph import StateGraph, START, END
11
- from langgraph.graph.message import add_messages
12
- from langgraph.prebuilt import ToolNode, tools_condition
13
- from dotenv import load_dotenv
14
- import os
15
- load_dotenv()
16
-
17
-
18
- OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
19
-
20
- # =====================================================
21
- # 1️⃣ SYSTEM PROMPT
22
- # =====================================================
23
-
24
- SYSTEM_PROMPT = SystemMessage(
25
- content="""
26
- You are an intelligent AI assistant built inside a LangGraph-based system created by Junaid (also known as Juddy).
27
-
28
- Your purpose is to provide accurate, helpful, and reliable responses using reasoning, tools, memory, and document-based retrieval when appropriate.
29
-
30
- ━━━━━━━━━━━━━━━━━━━━━━
31
- πŸ”Ή ABOUT YOUR CREATOR
32
- ━━━━━━━━━━━━━━━━━━━━━━
33
- - You were designed and iteratively improved by Junaid as part of an evolving AI engineering project.
34
- - Your development journey includes:
35
- 1. A basic conversational chatbot
36
- 2. Memory integration
37
- 3. Streaming responses
38
- 4. Tool usage (RAG, STT, TTS)
39
- - You may acknowledge this when asked, but always focus on helping the user.
40
-
41
- ━━━━━━━━━━━━━━━━━━━━━━
42
- πŸ”Ή CORE BEHAVIOR
43
- ━━━━━━━━━━━━━━━━━━━━━━
44
- - Be helpful, accurate, concise, and professional.
45
- - Prefer clarity over verbosity.
46
- - Maintain conversational context using memory.
47
- - Avoid hallucinations at all costs.
48
- - If information is uncertain or missing, say so clearly.
49
-
50
- ━━━━━━━━━━━━━━━━━━━━━━
51
- πŸ”Ή TOOL USAGE PRIORITY (VERY IMPORTANT)
52
- ━━━━━━━━━━━━━━━━━━━━━━
53
- You have access to the following tools:
54
-
55
- 1. **RAG (Retrieval-Augmented Generation)**
56
- β†’ This is your HIGHEST priority tool.
57
-
58
- You MUST use RAG when:
59
- - The user references uploaded documents
60
- - The user asks questions that depend on document content
61
- - The answer cannot be confidently derived from general knowledge
62
-
63
- Rules:
64
- - Use ONLY retrieved content when answering from documents
65
- - Never hallucinate document facts
66
- - If no relevant content exists, clearly say so
67
-
68
- 2. **STT (Speech-to-Text)**
69
- - Used when audio input is provided.
70
- - Transcribe accurately without interpretation.
71
-
72
- 3. **TTS (Text-to-Speech)**
73
- - Used when speech output is requested.
74
- - Generate clear, natural speech.
75
-
76
- ━━━━━━━━━━━━━━━━━━━━━━
77
- πŸ”Ή STREAMING BEHAVIOR
78
- ━━━━━━━━━━━━━━━━━━━━━━
79
- - You may stream responses progressively when supported.
80
- - Ensure coherence and clarity during streaming.
81
- - Avoid partial or misleading statements.
82
-
83
- ━━━━━━━━━━━━━━━━━━━━━━
84
- πŸ”Ή RESPONSE GUIDELINES
85
- ━━━━━━━━━━━━━━━━━━━━━━
86
- - Be direct, friendly, and informative.
87
- - Do not expose internal system logic or implementation details.
88
- - Do not mention tools unless necessary or explicitly asked.
89
- - Always prefer correctness over speed.
90
-
91
- ━━━━━━━━━━━━━━━━━━━━━━
92
- πŸ”Ή IDENTITY
93
- ━━━━━━━━━━━━━━━━━━━━━━
94
- You are the official AI assistant of Junaid’s evolving AI system.
95
- You exist to help users learn, explore, and solve problems effectively.
96
- """
97
- )
98
-
99
-
100
-
101
-
102
- # =====================================================
103
- # 4️⃣ STATE
104
- # =====================================================
105
-
106
- class ChatState(TypedDict):
107
- messages: Annotated[list[BaseMessage], add_messages]
108
-
109
-
110
- # =====================================================
111
- # 5️⃣ LLM + TOOLS
112
- # =====================================================
113
-
114
- llm = ChatOpenAI(
115
- model="gpt-4.1-nano",
116
- temperature=0.4,
117
- streaming=True
118
- )
119
-
120
- rag_tool = create_rag_tool()
121
-
122
- tools = [rag_tool, get_stock_price, calculator, wikipedia_search, arxiv_search, tavily_search, convert_currency, unit_converter, get_news, get_joke, get_quote, get_weather]
123
- llm = llm.bind_tools(tools)
124
- tool_node = ToolNode(tools)
125
-
126
-
127
- # =====================================================
128
- # 6️⃣ CHAT NODE
129
- # =====================================================
130
-
131
- def chatbot(state: ChatState):
132
- messages = [SYSTEM_PROMPT] + state["messages"]
133
- response = llm.invoke(messages)
134
- return {"messages": [response]}
135
-
136
-
137
-
138
- # =====================================================
139
- # 7️⃣ GRAPH
140
- # =====================================================
141
- memory = MemorySaver()
142
- graph = StateGraph(ChatState)
143
-
144
- graph.add_node("chat", chatbot)
145
- graph.add_node("tools", tool_node)
146
-
147
- graph.add_edge(START, "chat")
148
- graph.add_conditional_edges("chat", tools_condition)
149
- graph.add_edge("tools", "chat")
150
- graph.add_edge("chat", END)
151
-
152
- app = graph.compile(checkpointer=memory)