|
from typing import Any, Optional |
|
from smolagents.tools import Tool |
|
|
|
class FinalAnswerTool(Tool): |
|
name = "final_answer" |
|
description = "Provides the final comprehensive travel information to the user." |
|
inputs = {'answer': {'type': 'string', 'description': 'The final answer to return to the user.'}} |
|
output_type = "string" |
|
|
|
def __init__(self): |
|
super().__init__() |
|
|
|
def forward(self, answer: str) -> str: |
|
|
|
if "Travel summary" not in answer and "Detailed travel information" not in answer: |
|
|
|
sections = answer.split("\n\n") |
|
formatted_answer = "### Travel summary (short version):\n" |
|
|
|
if len(sections) > 0: |
|
formatted_answer += sections[0] + "\n\n" |
|
|
|
formatted_answer += "### Detailed travel information:\n" |
|
if len(sections) > 1: |
|
formatted_answer += "\n".join(sections[1:]) + "\n\n" |
|
|
|
formatted_answer += "### Practical tips and recommendations:\n" |
|
|
|
tip_keywords = ["tip", "recommend", "bring", "pack", "don't forget", "suggestion"] |
|
tip_lines = [] |
|
|
|
for line in answer.split("\n"): |
|
if any(keyword in line.lower() for keyword in tip_keywords): |
|
tip_lines.append(line) |
|
|
|
if tip_lines: |
|
formatted_answer += "\n".join(tip_lines) |
|
else: |
|
formatted_answer += "Safe travels! Remember to check local regulations and customs before your trip." |
|
|
|
return formatted_answer |
|
|
|
return answer |
|
|