File size: 2,968 Bytes
9b5b26a c19d193 6aae614 00c6dfa 8fe992b 9b5b26a eebba0a 75b0936 0d3f705 9b5b26a 0d3f705 9b5b26a 0d3f705 9b5b26a 00c6dfa 0d3f705 00c6dfa 0d3f705 9b5b26a 0d3f705 8c01ffb 75b0936 d6820d5 93e8ab1 d6820d5 75b0936 8c01ffb 75b0936 93e8ab1 75b0936 d6820d5 93e8ab1 d6820d5 93e8ab1 d6820d5 75b0936 6aae614 ae7a494 e121372 bf6d34c 29ec968 fe328e0 13d500a 8c01ffb d6820d5 8c01ffb 861422e 9b5b26a 8c01ffb 8fe992b 75b0936 8c01ffb 861422e 8fe992b 9b5b26a 8c01ffb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
import datetime
import requests
import pytz
import yaml
from tools.final_answer import FinalAnswerTool
from PIL import Image
from io import BytesIO
from Gradio_UI import GradioUI
@tool
def company_logos(company_name: str) -> Image.Image:
"""A tool that retrieves the logo of a given company using the Clearbit Logo API.
Args:
company_name: The name of the company.
Returns:
The URL of the company's logo or an error message if retrieval fails.
"""
# Convert company name into a domain-friendly format
company_domain = company_name.lower().replace(" ", "") + ".com"
# Clearbit Logo API endpoint
logo_url = f"https://logo.clearbit.com/{company_domain}?token=sk_VoU5zjclT8Ot9RoyAbAh9g"
try:
# Make a request to get the logo image
response = requests.get(logo_url)
if response.status_code == 200:
# Convert response content to an image
image = Image.open(BytesIO(response.content))
return image
else:
return f"Could not find a logo for {company_name}."
except Exception as e:
return f"Error fetching logo for {company_name}: {str(e)}"
@tool
def company_description(company_name: str) -> str:
"""Fetches a company description using DuckDuckGo's Instant Answer API.
Args:
company_name: The name of the company.
Returns:
A short description of the company.
"""
url = f"https://api.duckduckgo.com/?q={company_name}+company&format=json"
try:
response = requests.get(url)
if response.status_code == 200:
data = response.json()
return data.get("AbstractText", "No description available.")
else:
return "Company description not found."
except Exception as e:
return f"Error fetching company description: {str(e)}"
final_answer = FinalAnswerTool()
# If the agent does not answer, the model is overloaded, please use another model or the following Hugging Face Endpoint that also contains qwen2.5 coder:
# model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud'
model = HfApiModel(
max_tokens=2096,
temperature=0.5,
model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
custom_role_conversions=None,
)
# # Import tool from Hub
# image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
with open("prompts.yaml", 'r') as stream:
prompt_templates = yaml.safe_load(stream)
agent = CodeAgent(
model=model,
tools=[final_answer, company_logos, company_description], ## add your tools here (don't remove final answer)
max_steps=6,
verbosity_level=1,
grammar=None,
planning_interval=None,
name=None,
description=None,
prompt_templates=prompt_templates
)
GradioUI(agent).launch() |