the agent is working again
Browse files
__pycache__/Gradio_UI.cpython-312.pyc
CHANGED
|
Binary files a/__pycache__/Gradio_UI.cpython-312.pyc and b/__pycache__/Gradio_UI.cpython-312.pyc differ
|
|
|
__pycache__/app.cpython-312.pyc
CHANGED
|
Binary files a/__pycache__/app.cpython-312.pyc and b/__pycache__/app.cpython-312.pyc differ
|
|
|
app.py
CHANGED
|
@@ -91,16 +91,44 @@ def research_topic(query: str) -> str:
|
|
| 91 |
"""
|
| 92 |
try:
|
| 93 |
# Create a fresh instance for each search
|
| 94 |
-
search_tool = get_search_tool(max_results=
|
| 95 |
|
| 96 |
# Add focus on tech and AI product development
|
| 97 |
enhanced_query = f"{query} AI product development"
|
| 98 |
results = search_tool.forward(enhanced_query)
|
| 99 |
|
| 100 |
# Format the results in your style
|
| 101 |
-
response = f"
|
| 102 |
-
|
| 103 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 104 |
|
| 105 |
return response
|
| 106 |
except Exception as e:
|
|
|
|
| 91 |
"""
|
| 92 |
try:
|
| 93 |
# Create a fresh instance for each search
|
| 94 |
+
search_tool = get_search_tool(max_results=5) # Increased from 3 to 5
|
| 95 |
|
| 96 |
# Add focus on tech and AI product development
|
| 97 |
enhanced_query = f"{query} AI product development"
|
| 98 |
results = search_tool.forward(enhanced_query)
|
| 99 |
|
| 100 |
# Format the results in your style
|
| 101 |
+
response = f"# Research on {query}\n\n"
|
| 102 |
+
|
| 103 |
+
# Split content into examples and sources
|
| 104 |
+
examples = []
|
| 105 |
+
sources = []
|
| 106 |
+
current_example = []
|
| 107 |
+
|
| 108 |
+
for line in results.split('\n'):
|
| 109 |
+
if line.startswith('http'):
|
| 110 |
+
sources.append(line.strip())
|
| 111 |
+
if current_example:
|
| 112 |
+
examples.append('\n'.join(current_example))
|
| 113 |
+
current_example = []
|
| 114 |
+
elif line.strip():
|
| 115 |
+
current_example.append(line.strip())
|
| 116 |
+
|
| 117 |
+
if current_example:
|
| 118 |
+
examples.append('\n'.join(current_example))
|
| 119 |
+
|
| 120 |
+
# Add examples with clear separation
|
| 121 |
+
response += "## Key Insights\n\n"
|
| 122 |
+
for i, example in enumerate(examples, 1):
|
| 123 |
+
response += f"### Example {i}\n"
|
| 124 |
+
response += f"{example}\n\n"
|
| 125 |
+
|
| 126 |
+
# Add sources
|
| 127 |
+
response += "\n## Sources\n"
|
| 128 |
+
for source in sources:
|
| 129 |
+
response += f"- {source}\n"
|
| 130 |
+
|
| 131 |
+
response += "\n\nNote: Always verify current information."
|
| 132 |
|
| 133 |
return response
|
| 134 |
except Exception as e:
|
tools/__pycache__/blog_tools.cpython-312.pyc
CHANGED
|
Binary files a/tools/__pycache__/blog_tools.cpython-312.pyc and b/tools/__pycache__/blog_tools.cpython-312.pyc differ
|
|
|
tools/__pycache__/final_answer.cpython-312.pyc
CHANGED
|
Binary files a/tools/__pycache__/final_answer.cpython-312.pyc and b/tools/__pycache__/final_answer.cpython-312.pyc differ
|
|
|
tools/__pycache__/search_tools.cpython-312.pyc
ADDED
|
Binary file (526 Bytes). View file
|
|
|
tools/final_answer.py
CHANGED
|
@@ -1,14 +1,51 @@
|
|
| 1 |
-
from typing import Any, Optional
|
| 2 |
from smolagents.tools import Tool
|
| 3 |
|
| 4 |
class FinalAnswerTool(Tool):
|
| 5 |
name = "final_answer"
|
| 6 |
-
description = "Provides a final answer to the given problem."
|
| 7 |
-
inputs = {
|
| 8 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 9 |
|
| 10 |
-
def
|
| 11 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 12 |
|
| 13 |
def __init__(self, *args, **kwargs):
|
| 14 |
self.is_initialized = False
|
|
|
|
| 1 |
+
from typing import Any, Optional, Dict, Union
|
| 2 |
from smolagents.tools import Tool
|
| 3 |
|
| 4 |
class FinalAnswerTool(Tool):
|
| 5 |
name = "final_answer"
|
| 6 |
+
description = "Provides a final answer to the given problem with proper formatting and sources."
|
| 7 |
+
inputs = {
|
| 8 |
+
'content': {'type': 'string', 'description': 'The main content of the answer'},
|
| 9 |
+
'sources': {
|
| 10 |
+
'type': 'array',
|
| 11 |
+
'description': 'List of sources used in the research',
|
| 12 |
+
'nullable': True
|
| 13 |
+
},
|
| 14 |
+
'metadata': {
|
| 15 |
+
'type': 'object',
|
| 16 |
+
'description': 'Additional metadata like readability score, SEO info, etc.',
|
| 17 |
+
'nullable': True
|
| 18 |
+
}
|
| 19 |
+
}
|
| 20 |
+
output_type = "string"
|
| 21 |
|
| 22 |
+
def format_output(self, content: str, sources: list = None, metadata: Dict = None) -> str:
|
| 23 |
+
"""Format the output in a clean, readable way with proper sections."""
|
| 24 |
+
output_parts = []
|
| 25 |
+
|
| 26 |
+
# Add main content
|
| 27 |
+
output_parts.append("# Content\n")
|
| 28 |
+
output_parts.append(content.strip())
|
| 29 |
+
output_parts.append("\n\n")
|
| 30 |
+
|
| 31 |
+
# Add sources if available
|
| 32 |
+
if sources and len(sources) > 0:
|
| 33 |
+
output_parts.append("# Sources\n")
|
| 34 |
+
for idx, source in enumerate(sources, 1):
|
| 35 |
+
output_parts.append(f"{idx}. {source}\n")
|
| 36 |
+
output_parts.append("\n")
|
| 37 |
+
|
| 38 |
+
# Add metadata if available
|
| 39 |
+
if metadata:
|
| 40 |
+
output_parts.append("# Additional Information\n")
|
| 41 |
+
for key, value in metadata.items():
|
| 42 |
+
output_parts.append(f"- {key}: {value}\n")
|
| 43 |
+
|
| 44 |
+
return "".join(output_parts)
|
| 45 |
+
|
| 46 |
+
def forward(self, content: str, sources: list = None, metadata: Dict = None) -> str:
|
| 47 |
+
"""Process the final answer with proper formatting."""
|
| 48 |
+
return self.format_output(content, sources, metadata)
|
| 49 |
|
| 50 |
def __init__(self, *args, **kwargs):
|
| 51 |
self.is_initialized = False
|