MCPcopy Create free account
hub / github.com/Azure-Samples/rag-postgres-openai-python / RAGChatBase

Class RAGChatBase

src/backend/fastapi_app/rag_base.py:17–69  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15
16
17class RAGChatBase(ABC):
18 prompts_dir = pathlib.Path(__file__).parent / "prompts/"
19 answer_prompt_template = open(prompts_dir / "answer.txt").read()
20
21 def get_chat_params(self, messages: list[ResponseInputItemParam], overrides: ChatRequestOverrides) -> ChatParams:
22 response_token_limit = 1024
23 prompt_template = overrides.prompt_template or self.answer_prompt_template
24
25 enable_text_search = overrides.retrieval_mode in ["text", "hybrid", None]
26 enable_vector_search = overrides.retrieval_mode in ["vectors", "hybrid", None]
27
28 original_user_query = messages[-1].get("content")
29 if not isinstance(original_user_query, str):
30 raise ValueError("The most recent message content must be a string.")
31
32 return ChatParams(
33 top=overrides.top,
34 temperature=overrides.temperature,
35 retrieval_mode=overrides.retrieval_mode,
36 use_advanced_flow=overrides.use_advanced_flow,
37 response_token_limit=response_token_limit,
38 prompt_template=prompt_template,
39 enable_text_search=enable_text_search,
40 enable_vector_search=enable_vector_search,
41 original_user_query=original_user_query,
42 past_messages=messages[:-1],
43 )
44
45 @abstractmethod
46 async def prepare_context(self) -> tuple[list[ItemPublic], list[ThoughtStep]]:
47 raise NotImplementedError
48
49 def prepare_rag_request(self, user_query, items: list[ItemPublic]) -> str:
50 sources_str = "\n".join([f"[{item.id}]:{item.to_str_for_rag()}" for item in items])
51 return f"{user_query}Sources:\n{sources_str}"
52
53 @abstractmethod
54 async def answer(
55 self,
56 items: list[ItemPublic],
57 earlier_thoughts: list[ThoughtStep],
58 ) -> RetrievalResponse:
59 raise NotImplementedError
60
61 @abstractmethod
62 async def answer_stream(
63 self,
64 items: list[ItemPublic],
65 earlier_thoughts: list[ThoughtStep],
66 ) -> AsyncGenerator[RetrievalResponseDelta, None]:
67 raise NotImplementedError
68 if False:
69 yield 0

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected