mirror of
https://github.com/danswer-ai/danswer.git
synced 2025-06-06 21:19:54 +02:00
One Shot API No Stream (#41)
This commit is contained in:
parent
c1862e961b
commit
f17dc52b37
@ -3,12 +3,20 @@ from fastapi import Depends
|
|||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from danswer.auth.users import current_user
|
from danswer.auth.users import current_user
|
||||||
|
from danswer.chat.chat_utils import compute_max_document_tokens
|
||||||
from danswer.configs.chat_configs import DISABLE_LLM_CHUNK_FILTER
|
from danswer.configs.chat_configs import DISABLE_LLM_CHUNK_FILTER
|
||||||
from danswer.configs.chat_configs import NUM_RETURNED_HITS
|
from danswer.configs.chat_configs import NUM_RETURNED_HITS
|
||||||
|
from danswer.configs.danswerbot_configs import DANSWER_BOT_TARGET_CHUNK_PERCENTAGE
|
||||||
|
from danswer.db.chat import get_persona_by_id
|
||||||
from danswer.db.embedding_model import get_current_db_embedding_model
|
from danswer.db.embedding_model import get_current_db_embedding_model
|
||||||
from danswer.db.engine import get_session
|
from danswer.db.engine import get_session
|
||||||
from danswer.db.models import User
|
from danswer.db.models import User
|
||||||
from danswer.document_index.factory import get_default_document_index
|
from danswer.document_index.factory import get_default_document_index
|
||||||
|
from danswer.llm.utils import get_default_llm_version
|
||||||
|
from danswer.llm.utils import get_max_input_tokens
|
||||||
|
from danswer.one_shot_answer.answer_question import get_search_answer
|
||||||
|
from danswer.one_shot_answer.models import DirectQARequest
|
||||||
|
from danswer.one_shot_answer.models import OneShotQAResponse
|
||||||
from danswer.search.access_filters import build_access_filters_for_user
|
from danswer.search.access_filters import build_access_filters_for_user
|
||||||
from danswer.search.models import IndexFilters
|
from danswer.search.models import IndexFilters
|
||||||
from danswer.search.models import SavedSearchDoc
|
from danswer.search.models import SavedSearchDoc
|
||||||
@ -87,3 +95,42 @@ def handle_search_request(
|
|||||||
return SearchResponse(
|
return SearchResponse(
|
||||||
top_documents=fake_saved_docs, llm_indices=llm_selection_indices
|
top_documents=fake_saved_docs, llm_indices=llm_selection_indices
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@basic_router.post("/answer-with-quote")
|
||||||
|
def get_answer_with_quote(
|
||||||
|
query_request: DirectQARequest,
|
||||||
|
user: User = Depends(current_user),
|
||||||
|
db_session: Session = Depends(get_session),
|
||||||
|
) -> OneShotQAResponse:
|
||||||
|
query = query_request.messages[0].message
|
||||||
|
logger.info(f"Received query for one shot answer API with quotes: {query}")
|
||||||
|
|
||||||
|
persona = get_persona_by_id(
|
||||||
|
persona_id=query_request.persona_id, user_id=user.id, db_session=db_session
|
||||||
|
)
|
||||||
|
|
||||||
|
llm_name = get_default_llm_version()[0]
|
||||||
|
if persona and persona.llm_model_version_override:
|
||||||
|
llm_name = persona.llm_model_version_override
|
||||||
|
|
||||||
|
input_tokens = get_max_input_tokens(model_name=llm_name)
|
||||||
|
max_history_tokens = int(input_tokens * DANSWER_BOT_TARGET_CHUNK_PERCENTAGE)
|
||||||
|
|
||||||
|
remaining_tokens = input_tokens - max_history_tokens
|
||||||
|
|
||||||
|
max_document_tokens = compute_max_document_tokens(
|
||||||
|
persona=persona,
|
||||||
|
actual_user_input=query,
|
||||||
|
max_llm_token_override=remaining_tokens,
|
||||||
|
)
|
||||||
|
|
||||||
|
answer_details = get_search_answer(
|
||||||
|
query_req=query_request,
|
||||||
|
user=user,
|
||||||
|
max_document_tokens=max_document_tokens,
|
||||||
|
max_history_tokens=max_history_tokens,
|
||||||
|
db_session=db_session,
|
||||||
|
)
|
||||||
|
|
||||||
|
return answer_details
|
||||||
|
Loading…
x
Reference in New Issue
Block a user