Spaces:
Running
Running
AdityaAdaki
commited on
Commit
·
b11459b
1
Parent(s):
80a2c80
enhanced the RAG
Browse files
f1_ai.py
CHANGED
@@ -178,17 +178,24 @@ class F1AI:
|
|
178 |
# Format context from documents
|
179 |
context = "\n\n".join([f"Document {i+1}: {doc.page_content}" for i, doc in enumerate(docs)])
|
180 |
|
181 |
-
# Create prompt for the LLM
|
182 |
prompt = f"""
|
183 |
-
|
184 |
-
|
185 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
186 |
Context:
|
187 |
{context}
|
188 |
|
189 |
Question: {question}
|
190 |
-
|
191 |
-
|
192 |
"""
|
193 |
|
194 |
# Get response from LLM
|
@@ -203,17 +210,27 @@ class F1AI:
|
|
203 |
else: # LangChain LLM
|
204 |
response_text = self.llm.invoke(prompt)
|
205 |
|
206 |
-
#
|
207 |
-
sources = [
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
|
|
|
|
|
|
|
|
|
|
212 |
|
213 |
-
# Format response
|
214 |
formatted_response = {
|
215 |
"answer": response_text,
|
216 |
-
"sources": sources
|
|
|
|
|
|
|
|
|
|
|
217 |
}
|
218 |
|
219 |
return formatted_response
|
@@ -258,8 +275,16 @@ async def main():
|
|
258 |
console.print(Markdown(response['answer']))
|
259 |
|
260 |
console.print("\n[bold yellow]Sources:[/bold yellow]")
|
261 |
-
for
|
262 |
-
console.print(f"[{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
263 |
else:
|
264 |
parser.print_help()
|
265 |
|
|
|
178 |
# Format context from documents
|
179 |
context = "\n\n".join([f"Document {i+1}: {doc.page_content}" for i, doc in enumerate(docs)])
|
180 |
|
181 |
+
# Create enhanced prompt for the LLM with better instructions
|
182 |
prompt = f"""
|
183 |
+
You are an expert Formula 1 knowledge assistant. Using the provided context, answer the question comprehensively and naturally.
|
184 |
+
|
185 |
+
Guidelines:
|
186 |
+
1. Provide detailed, well-structured responses that flow naturally
|
187 |
+
2. Use source citations [1], [2], etc. to support key facts
|
188 |
+
3. If information is uncertain or missing from context, acknowledge it
|
189 |
+
4. Organize complex answers with clear paragraphs
|
190 |
+
5. Add relevant examples or explanations when helpful
|
191 |
+
6. dont fill the ouput with citations only
|
192 |
+
|
193 |
Context:
|
194 |
{context}
|
195 |
|
196 |
Question: {question}
|
197 |
+
|
198 |
+
Provide a comprehensive answer with appropriate citations:
|
199 |
"""
|
200 |
|
201 |
# Get response from LLM
|
|
|
210 |
else: # LangChain LLM
|
211 |
response_text = self.llm.invoke(prompt)
|
212 |
|
213 |
+
# Process and format sources with better attribution
|
214 |
+
sources = []
|
215 |
+
for i, doc in enumerate(docs, 1):
|
216 |
+
source = {
|
217 |
+
"index": i,
|
218 |
+
"url": doc.metadata["source"],
|
219 |
+
"chunk_index": doc.metadata.get("chunk_index", 0),
|
220 |
+
"timestamp": doc.metadata.get("timestamp", ""),
|
221 |
+
"excerpt": doc.page_content[:200] + "..." if len(doc.page_content) > 200 else doc.page_content
|
222 |
+
}
|
223 |
+
sources.append(source)
|
224 |
|
225 |
+
# Format response with enhanced structure
|
226 |
formatted_response = {
|
227 |
"answer": response_text,
|
228 |
+
"sources": sources,
|
229 |
+
"metadata": {
|
230 |
+
"total_sources": len(sources),
|
231 |
+
"query_timestamp": datetime.now().isoformat(),
|
232 |
+
"response_format_version": "2.0"
|
233 |
+
}
|
234 |
}
|
235 |
|
236 |
return formatted_response
|
|
|
275 |
console.print(Markdown(response['answer']))
|
276 |
|
277 |
console.print("\n[bold yellow]Sources:[/bold yellow]")
|
278 |
+
for source in response['sources']:
|
279 |
+
console.print(f"[{source['index']}] {source['url']}")
|
280 |
+
console.print(f"[dim]Excerpt:[/dim] {source['excerpt']}\n")
|
281 |
+
|
282 |
+
# Print metadata
|
283 |
+
console.print("\n[bold blue]Query Info:[/bold blue]")
|
284 |
+
console.print(f"Total sources: {response['metadata']['total_sources']}")
|
285 |
+
console.print(f"Query time: {response['metadata']['query_timestamp']}")
|
286 |
+
console.print(f"Response version: {response['metadata']['response_format_version']}")
|
287 |
+
|
288 |
else:
|
289 |
parser.print_help()
|
290 |
|