| | from smolagents import CodeAgent, HfApiModel, tool |
| | import requests |
| | import yaml |
| |
|
| | |
| | @tool |
| | def search_cape_town_weather() -> str: |
| | """Searches for the latest weather in Cape Town using EXA search API.""" |
| | api_key = "fe5ee653-7f0d-493c-99ae-8e63d46133d9" |
| | query = "current weather in Cape Town site:bbc.com OR site:cnn.com OR site:news24.com" |
| | url = f"https://api.exa.ai/v1/search?q={query}&api_key={api_key}" |
| |
|
| | try: |
| | response = requests.get(url) |
| | data = response.json() |
| |
|
| | if "results" in data and len(data["results"]) > 0: |
| | top_result = data["results"][0] |
| | title = top_result["title"] |
| | snippet = top_result["snippet"] |
| | link = top_result["url"] |
| | return f"Latest Cape Town weather report:\n{title}\n{snippet}\nMore info: {link}" |
| | else: |
| | return "No weather updates found. Try again later." |
| | except Exception as e: |
| | return f"Error fetching data: {str(e)}" |
| |
|
| | |
| | model = HfApiModel( |
| | model_id='mistralai/Mistral-7B-Instruct', |
| | max_tokens=200, |
| | temperature=0.5 |
| | ) |
| |
|
| | |
| | with open("prompts.yaml", "r") as stream: |
| | prompt_templates = yaml.safe_load(stream) |
| |
|
| | |
| | agent = CodeAgent( |
| | model=model, |
| | tools=[search_cape_town_weather], |
| | max_steps=3, |
| | verbosity_level=1, |
| | prompt_templates=prompt_templates |
| | ) |
| |
|
| | |
| | if __name__ == "__main__": |
| | print(agent.run("Find the latest weather update for Cape Town.")) |
| |
|