LevinAleksey commited on
Commit
5a160ba
·
verified ·
1 Parent(s): 533829c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -8
app.py CHANGED
@@ -5,7 +5,7 @@ from enum import Enum
5
  import chainlit as cl
6
  from huggingface_hub import InferenceClient
7
  from qdrant_client import QdrantClient
8
- from sentence_transformers import SentenceTransformer
9
 
10
 
11
  # ================================
@@ -15,6 +15,7 @@ from sentence_transformers import SentenceTransformer
15
  HF_TOKEN = os.getenv("HF_TOKEN")
16
  QDRANT_URL = os.getenv("QDRANT_URL")
17
  QDRANT_API_KEY = os.getenv("QDRANT_API_KEY")
 
18
 
19
  MODEL_ID = "Qwen/Qwen2.5-72B-Instruct"
20
 
@@ -159,6 +160,8 @@ def detect_stage(history: List[Dict[str, str]], user_text: str) -> Stage:
159
  def check_env():
160
  if not HF_TOKEN:
161
  raise ValueError("HF_TOKEN is missing!")
 
 
162
 
163
 
164
  # ================================
@@ -168,14 +171,18 @@ def check_env():
168
  def get_context(
169
  query: str,
170
  q_client: Optional[QdrantClient],
171
- encoder: SentenceTransformer,
172
  ) -> str:
173
 
174
  if not q_client:
175
  return ""
176
 
177
  try:
178
- vector = encoder.encode(query).tolist()
 
 
 
 
179
 
180
  result = q_client.query_points(
181
  collection_name=QDRANT_COLLECTION,
@@ -240,11 +247,11 @@ async def start():
240
  except Exception as e:
241
  print("❌ Qdrant error:", e)
242
 
243
- encoder = SentenceTransformer("all-MiniLM-L6-v2")
244
 
245
  cl.user_session.set("hf_client", hf_client)
246
  cl.user_session.set("q_client", q_client)
247
- cl.user_session.set("encoder", encoder)
248
  cl.user_session.set("message_history", [])
249
 
250
 
@@ -257,7 +264,7 @@ async def main(message: cl.Message):
257
 
258
  hf_client: InferenceClient = cl.user_session.get("hf_client")
259
  q_client: Optional[QdrantClient] = cl.user_session.get("q_client")
260
- encoder: SentenceTransformer = cl.user_session.get("encoder")
261
 
262
  history: List[Dict[str, str]] = cl.user_session.get("message_history") or []
263
 
@@ -280,7 +287,7 @@ async def main(message: cl.Message):
280
  # RAG
281
  # =========================
282
 
283
- context = get_context(user_text, q_client, encoder)
284
 
285
  # =========================
286
  # BUILD MESSAGES
@@ -351,4 +358,16 @@ async def main(message: cl.Message):
351
 
352
  except Exception as e:
353
  await cl.Message(content=f"Произошла ошибка. Попробуйте еще раз или напишите нам напрямую: @alexdev").send()
354
- print(f"LLM Error: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  import chainlit as cl
6
  from huggingface_hub import InferenceClient
7
  from qdrant_client import QdrantClient
8
+ from openai import OpenAI
9
 
10
 
11
  # ================================
 
15
  HF_TOKEN = os.getenv("HF_TOKEN")
16
  QDRANT_URL = os.getenv("QDRANT_URL")
17
  QDRANT_API_KEY = os.getenv("QDRANT_API_KEY")
18
+ OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
19
 
20
  MODEL_ID = "Qwen/Qwen2.5-72B-Instruct"
21
 
 
160
  def check_env():
161
  if not HF_TOKEN:
162
  raise ValueError("HF_TOKEN is missing!")
163
+ if not OPENAI_API_KEY:
164
+ raise ValueError("OPENAI_API_KEY is missing!")
165
 
166
 
167
  # ================================
 
171
  def get_context(
172
  query: str,
173
  q_client: Optional[QdrantClient],
174
+ openai_client: OpenAI,
175
  ) -> str:
176
 
177
  if not q_client:
178
  return ""
179
 
180
  try:
181
+ response = openai_client.embeddings.create(
182
+ model="text-embedding-3-small",
183
+ input=query
184
+ )
185
+ vector = response.data[0].embedding
186
 
187
  result = q_client.query_points(
188
  collection_name=QDRANT_COLLECTION,
 
247
  except Exception as e:
248
  print("❌ Qdrant error:", e)
249
 
250
+ openai_client = OpenAI(api_key=OPENAI_API_KEY)
251
 
252
  cl.user_session.set("hf_client", hf_client)
253
  cl.user_session.set("q_client", q_client)
254
+ cl.user_session.set("openai_client", openai_client)
255
  cl.user_session.set("message_history", [])
256
 
257
 
 
264
 
265
  hf_client: InferenceClient = cl.user_session.get("hf_client")
266
  q_client: Optional[QdrantClient] = cl.user_session.get("q_client")
267
+ openai_client: OpenAI = cl.user_session.get("openai_client")
268
 
269
  history: List[Dict[str, str]] = cl.user_session.get("message_history") or []
270
 
 
287
  # RAG
288
  # =========================
289
 
290
+ context = get_context(user_text, q_client, openai_client)
291
 
292
  # =========================
293
  # BUILD MESSAGES
 
358
 
359
  except Exception as e:
360
  await cl.Message(content=f"Произошла ошибка. Попробуйте еще раз или напишите нам напрямую: @alexdev").send()
361
+ print(f"LLM Error: {e}")
362
+ ```
363
+
364
+ Не забудь:
365
+
366
+ 1. Добавить `openai` в `requirements.txt`:
367
+ ```
368
+ chainlit
369
+ huggingface_hub
370
+ qdrant-client
371
+ openai
372
+ uvicorn
373
+ websockets