muryshev commited on
Commit
4550b93
·
1 Parent(s): 4a37130
common/auth.py CHANGED
@@ -14,7 +14,7 @@ ACCESS_TOKEN_EXPIRE_MINUTES = 30
14
  # Захардкоженные пользователи
15
  USERS = [
16
  {"username": "admin", "password": "admin123"},
17
- {"username": "user", "password": "user123"},
18
  ]
19
 
20
  oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login/token")
 
14
  # Захардкоженные пользователи
15
  USERS = [
16
  {"username": "admin", "password": "admin123"},
17
+ {"username": "demo", "password": "sTrUPsORPA"},
18
  ]
19
 
20
  oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/auth/login/token")
components/dbo/models/llm_config.py CHANGED
@@ -16,7 +16,7 @@ class LLMConfig(Base):
16
 
17
  __tablename__ = "llm_config"
18
 
19
- is_default: Mapped[bool] = mapped_column(Boolean, is_default=False)
20
  model: Mapped[String] = mapped_column(String)
21
  temperature: Mapped[float] = mapped_column(Float)
22
  top_p: Mapped[float] = mapped_column(Float)
 
16
 
17
  __tablename__ = "llm_config"
18
 
19
+ is_default: Mapped[bool] = mapped_column(Boolean, default=False)
20
  model: Mapped[String] = mapped_column(String)
21
  temperature: Mapped[float] = mapped_column(Float)
22
  top_p: Mapped[float] = mapped_column(Float)
components/dbo/models/llm_prompt.py CHANGED
@@ -14,7 +14,7 @@ class LlmPrompt(Base):
14
 
15
  __tablename__ = "llm_prompt"
16
 
17
- is_default: Mapped[bool] = mapped_column(Boolean, is_default=False)
18
  name: Mapped[String] = mapped_column(String)
19
  text: Mapped[String] = mapped_column(String)
20
  type: Mapped[String] = mapped_column(String)
 
14
 
15
  __tablename__ = "llm_prompt"
16
 
17
+ is_default: Mapped[bool] = mapped_column(Boolean, default=False)
18
  name: Mapped[String] = mapped_column(String)
19
  text: Mapped[String] = mapped_column(String)
20
  type: Mapped[String] = mapped_column(String)
components/llm/common.py CHANGED
@@ -73,6 +73,7 @@ class Message(BaseModel):
73
  role: str
74
  content: str
75
  searchResults: str
 
76
 
77
  class ChatRequest(BaseModel):
78
  history: List[Message]
 
73
  role: str
74
  content: str
75
  searchResults: str
76
+ searchEntities: Optional[List[str]] = []
77
 
78
  class ChatRequest(BaseModel):
79
  history: List[Message]
routes/llm.py CHANGED
@@ -1,9 +1,10 @@
1
  import json
2
  import logging
3
  import os
4
- from typing import Annotated, AsyncGenerator, Optional
5
  from uuid import UUID
6
 
 
7
  from components.services.dialogue import DialogueService
8
  from fastapi.responses import StreamingResponse
9
 
@@ -70,11 +71,12 @@ def insert_search_results_to_message(
70
  return False
71
 
72
  def try_insert_search_results(
73
- chat_request: ChatRequest, search_results: str
74
  ) -> bool:
75
  for msg in reversed(chat_request.history):
76
  if msg.role == "user" and not msg.searchResults:
77
  msg.searchResults = search_results
 
78
  return True
79
  return False
80
 
@@ -117,8 +119,9 @@ async def sse_generator(request: ChatRequest, llm_api: DeepInfraApi, system_prom
117
  """
118
  Генератор для стриминга ответа LLM через SSE.
119
  """
 
120
  try:
121
- qe_result = await dialogue_service.get_qe_result(request.history)
122
 
123
  except Exception as e:
124
  logger.error(f"Error in SSE chat stream while dialogue_service.get_qe_result: {str(e)}", stack_info=True)
@@ -134,13 +137,16 @@ async def sse_generator(request: ChatRequest, llm_api: DeepInfraApi, system_prom
134
  text_chunks = entity_service.build_text(chunks, scores)
135
  search_results_event = {
136
  "event": "search_results",
137
- "data": f"{text_chunks}"
 
 
 
138
  }
139
  yield f"data: {json.dumps(search_results_event, ensure_ascii=False)}\n\n"
140
 
141
  # new_message = f'<search-results>\n{text_chunks}\n</search-results>\n{last_query.content}'
142
 
143
- try_insert_search_results(request, text_chunks)
144
  except Exception as e:
145
  logger.error(f"Error in SSE chat stream while searching: {str(e)}", stack_info=True)
146
  yield "data: {\"event\": \"error\", \"data\":\""+str(e)+"\" }\n\n"
@@ -171,6 +177,7 @@ async def chat_stream(
171
  entity_service: Annotated[EntityService, Depends(DI.get_entity_service)],
172
  dataset_service: Annotated[DatasetService, Depends(DI.get_dataset_service)],
173
  dialogue_service: Annotated[DialogueService, Depends(DI.get_dialogue_service)],
 
174
  ):
175
  try:
176
  p = llm_config_service.get_default()
 
1
  import json
2
  import logging
3
  import os
4
+ from typing import Annotated, AsyncGenerator, List, Optional
5
  from uuid import UUID
6
 
7
+ from common import auth
8
  from components.services.dialogue import DialogueService
9
  from fastapi.responses import StreamingResponse
10
 
 
71
  return False
72
 
73
  def try_insert_search_results(
74
+ chat_request: ChatRequest, search_results: str, entities: List[str]
75
  ) -> bool:
76
  for msg in reversed(chat_request.history):
77
  if msg.role == "user" and not msg.searchResults:
78
  msg.searchResults = search_results
79
+ msg.searchEntities = entities
80
  return True
81
  return False
82
 
 
119
  """
120
  Генератор для стриминга ответа LLM через SSE.
121
  """
122
+ qe_result = None
123
  try:
124
+ qe_result = await dialogue_service.get_qe_result(request.history)
125
 
126
  except Exception as e:
127
  logger.error(f"Error in SSE chat stream while dialogue_service.get_qe_result: {str(e)}", stack_info=True)
 
137
  text_chunks = entity_service.build_text(chunks, scores)
138
  search_results_event = {
139
  "event": "search_results",
140
+ "data": {
141
+ "text": text_chunks,
142
+ "ids": chunk_ids.tolist()
143
+ }
144
  }
145
  yield f"data: {json.dumps(search_results_event, ensure_ascii=False)}\n\n"
146
 
147
  # new_message = f'<search-results>\n{text_chunks}\n</search-results>\n{last_query.content}'
148
 
149
+ try_insert_search_results(request, text_chunks, chunk_ids.tolist())
150
  except Exception as e:
151
  logger.error(f"Error in SSE chat stream while searching: {str(e)}", stack_info=True)
152
  yield "data: {\"event\": \"error\", \"data\":\""+str(e)+"\" }\n\n"
 
177
  entity_service: Annotated[EntityService, Depends(DI.get_entity_service)],
178
  dataset_service: Annotated[DatasetService, Depends(DI.get_dataset_service)],
179
  dialogue_service: Annotated[DialogueService, Depends(DI.get_dialogue_service)],
180
+ current_user: Annotated[any, Depends(auth.get_current_user)]
181
  ):
182
  try:
183
  p = llm_config_service.get_default()