|
from smolagents import ( |
|
ToolCallingAgent, |
|
CodeAgent, |
|
DuckDuckGoSearchTool, |
|
VisitWebpageTool, |
|
InferenceClientModel, |
|
) |
|
from dotenv import load_dotenv |
|
from tracing import setup_tracing |
|
|
|
load_dotenv() |
|
|
|
|
|
trace_provider = None |
|
|
|
|
|
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(): |
|
|
|
initialize_tracing() |
|
|
|
|
|
|
|
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 |
|
) |
|
|
|
|
|
web_agent = ToolCallingAgent( |
|
tools=[DuckDuckGoSearchTool(), VisitWebpageTool()], |
|
model=llm_qwen, |
|
max_steps=10, |
|
name="Web_Agent", |
|
description="A web agent that can search the web and visit webpages.", |
|
) |
|
|
|
|
|
manager_agent = CodeAgent( |
|
tools=[], |
|
managed_agents=[web_agent], |
|
model=llm_deepseek, |
|
max_steps=10, |
|
) |
|
return manager_agent |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
|
|
initialize_tracing(enabled=True, provider="phoenix") |
|
|
|
|
|
agent = get_agent() |
|
|
|
|
|
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") |
|
|