|
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 |
|
|
|
|
|
llm = pipeline("text-generation", model="Qwen/Qwen2.5-Coder-32B-Instruct") |
|
|
|
@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. |
|
""" |
|
|
|
company_domain = company_name.lower().replace(" ", "") + ".com" |
|
|
|
|
|
logo_url = f"https://logo.clearbit.com/{company_domain}?token=sk_VoU5zjclT8Ot9RoyAbAh9g" |
|
|
|
try: |
|
|
|
response = requests.get(logo_url) |
|
if response.status_code == 200: |
|
|
|
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: |
|
"""Generates a short company description using an LLM. |
|
|
|
Args: |
|
company_name: The name of the company. |
|
|
|
Returns: |
|
A short description of the company. |
|
""" |
|
|
|
prompt = ( |
|
f"Provide a short summary about {company_name}. Include:\n" |
|
"- One sentence describing the company's main product or service.\n" |
|
"- Two sentences summarizing the company's history.\n" |
|
"- One sentence about the latest news related to the company." |
|
) |
|
|
|
try: |
|
response = llm(prompt, max_length=150, do_sample=True) |
|
return response[0]["generated_text"] |
|
except Exception as e: |
|
return f"Error generating description for {company_name}: {str(e)}" |
|
|
|
final_answer = FinalAnswerTool() |
|
|
|
|
|
|
|
|
|
model = HfApiModel( |
|
max_tokens=2096, |
|
temperature=0.5, |
|
model_id='Qwen/Qwen2.5-Coder-32B-Instruct', |
|
custom_role_conversions=None, |
|
) |
|
|
|
|
|
|
|
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], |
|
max_steps=6, |
|
verbosity_level=1, |
|
grammar=None, |
|
planning_interval=None, |
|
name=None, |
|
description=None, |
|
prompt_templates=prompt_templates |
|
) |
|
|
|
|
|
GradioUI(agent).launch() |