Spaces:
Sleeping
Sleeping
import litellm | |
from typing import List, Dict, Any | |
from prompts import PROMPTS, format_prompt | |
from utils import save_results, generate_user_id | |
def zero_shot_answer(query: str) -> str: | |
""" | |
Generate a direct answer without interactive search. | |
Args: | |
query: The user's query | |
Returns: | |
The direct answer | |
""" | |
# Get prompt templates | |
system_template = PROMPTS["zero_shot"]["direct_answer"]["system"] | |
user_template = PROMPTS["zero_shot"]["direct_answer"]["user"] | |
# Format the prompts | |
format_args = {"query": query} | |
system_message = format_prompt(system_template, **format_args) | |
user_message = format_prompt(user_template, **format_args) | |
messages = [ | |
{"role": "system", "content": system_message}, | |
{"role": "user", "content": user_message} | |
] | |
# Get response from LLM | |
response = litellm.completion( | |
model="gpt-4o", | |
messages=messages, | |
temperature=0.3, | |
max_tokens=2000 | |
) | |
return response.choices[0].message.content | |
def start_zero_shot(query: str) -> List[Dict[str, str]]: | |
""" | |
Generate a direct answer using zero-shot approach. | |
Args: | |
query: User's query | |
Returns: | |
Chat history with the answer | |
""" | |
if not query or not query.strip(): | |
return [{"role": "assistant", "content": "Please enter a query."}] | |
# Generate a unique user ID | |
user_id = generate_user_id() | |
# Initialize chat history | |
chat_history = [] | |
# Add the original query to chat history | |
chat_history.append({"role": "user", "content": f"Query: {query}"}) | |
try: | |
# Use generating message template from YAML | |
generating_msg = PROMPTS["zero_shot"]["ui_messages"]["generating"] | |
chat_history.append({"role": "assistant", "content": generating_msg}) | |
# Generate direct answer | |
answer = zero_shot_answer(query) | |
# Format result message | |
result_msg = format_prompt( | |
PROMPTS["zero_shot"]["ui_messages"]["result"], | |
answer=answer | |
) | |
chat_history.append({"role": "assistant", "content": result_msg}) | |
# Save the results | |
save_path = save_results( | |
user_id=user_id, | |
query=query, | |
final_answer=answer, | |
method="zero_shot" | |
) | |
saved_msg = format_prompt( | |
PROMPTS["zero_shot"]["ui_messages"]["saved_result"], | |
save_path=save_path, | |
user_id=user_id | |
) | |
chat_history.append({"role": "system", "content": saved_msg}) | |
return chat_history | |
except Exception as e: | |
error_msg = format_prompt( | |
PROMPTS["zero_shot"]["ui_messages"]["error_general"], | |
error_message=str(e) | |
) | |
print(error_msg) | |
return [ | |
{"role": "user", "content": f"Query: {query}"}, | |
{"role": "assistant", "content": "I encountered an error while generating a direct answer."}, | |
{"role": "system", "content": error_msg} | |
] |