Kai Jennissen
ctd
1c0a810 unverified
raw
history blame
3.52 kB
from smolagents import (
ToolCallingAgent,
CodeAgent,
DuckDuckGoSearchTool,
VisitWebpageTool,
InferenceClientModel,
)
from dotenv import load_dotenv
from tracing import setup_tracing
load_dotenv()
# Initialize tracing when module is imported
trace_provider = None
MANAGER_PROMPT = """You are a helpful assistant tasked with answering questions using a set of tools.
Now, I will ask you a question. Report your thoughts, and finish your answer with the following template:
FINAL ANSWER: [YOUR FINAL ANSWER].
YOUR FINAL ANSWER should be a number OR as few words as possible OR a comma separated list of numbers and/or strings.
If you are asked for a number, don't use comma to write your number neither use units such as $ or percent sign unless specified otherwise.
If you are asked for a string, don't use articles, neither abbreviations (e.g. for cities), and write the digits in plain text unless specified otherwise.
If you are asked for a comma separated list, apply the above rules depending of whether the element to be put in the list is a number or a string.
Your answer should only start with "FINAL ANSWER: ", then follows with the answer. """
def initialize_tracing(enabled=True, provider="langfuse"):
"""
Initialize tracing for the agent module
Args:
enabled: Whether tracing should be active
provider: Which provider to use - "langfuse" or "phoenix"
"""
global trace_provider
if trace_provider is None:
trace_provider = setup_tracing(
service_name="smolagent", enabled=enabled, provider=provider
)
return trace_provider
def get_agent():
# Ensure tracing is initialized
initialize_tracing()
# SmolagentsInstrumentor will automatically trace agent operations
llm_qwen = InferenceClientModel(
model_id="Qwen/Qwen2.5-Coder-32B-Instruct", provider="together"
)
llm_deepseek = InferenceClientModel(
"deepseek-ai/DeepSeek-R1",
provider="together",
max_tokens=8096,
# "Qwen/Qwen3-235B-A22B-FP8",
# provider="together",
# max_tokens=8096,
)
# Create web agent
web_agent = ToolCallingAgent(
tools=[DuckDuckGoSearchTool(), VisitWebpageTool()],
model=llm_qwen,
max_steps=3,
name="Web_Agent",
description="A web agent that can search the web and visit webpages.",
verbosity_level=1,
)
# Create manager agent
manager_agent = CodeAgent(
tools=[],
managed_agents=[web_agent],
model=llm_deepseek,
max_steps=5,
planning_interval=10,
additional_authorized_imports=["pandas", "numpy"],
verbosity_level=1,
description=MANAGER_PROMPT,
)
return manager_agent
if __name__ == "__main__":
# Initialize tracing when run directly
# Choose one provider: "langfuse" (default) or "phoenix"
initialize_tracing(enabled=True, provider="phoenix")
# Get agent with tracing already configured
agent = get_agent()
# Run agent - SmolagentsInstrumentor will automatically trace the execution
print("Running agent with tracing enabled...")
result = agent.run(
"What is the latest news about AI? Please search the web and summarize the results."
)
print(f"Result: {result}")
print(
"If using Phoenix: run 'python -m phoenix.server.main serve' and view at http://localhost:6006"
)
print("If using Langfuse: view traces at https://cloud.langfuse.com")