Clint Adams commited on
Commit
7ae8483
·
1 Parent(s): e126484

test an API lookup tool

Browse files
Files changed (2) hide show
  1. app.py +37 -11
  2. requirements.txt +1 -0
app.py CHANGED
@@ -1,4 +1,5 @@
1
  from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
 
2
  import datetime
3
  import requests
4
  import pytz
@@ -30,15 +31,39 @@ trace_provider.add_span_processor(SimpleSpanProcessor(OTLPSpanExporter()))
30
 
31
  SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)
32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
33
  @tool
34
- def multiplication_tool(arg1:int, arg2:int)-> int:
35
- #Keep this format for the description / args / args description but feel free to modify the tool
36
- """A tool that multiplies two integers together
37
  Args:
38
- arg1: the first integers
39
- arg2: the second integers
40
  """
41
- return arg1*arg2
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
  @tool
44
  def get_current_time_in_timezone(timezone: str) -> str:
@@ -64,22 +89,23 @@ final_answer = FinalAnswerTool()
64
  model = HfApiModel(
65
  max_tokens=2096,
66
  temperature=0.5,
67
- model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
 
68
  custom_role_conversions=None,
69
  )
70
 
71
 
72
  # Import tool from Hub
73
- image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
74
 
75
  with open("prompts.yaml", 'r') as stream:
76
  prompt_templates = yaml.safe_load(stream)
77
-
78
  agent = CodeAgent(
79
  model=model,
80
- tools=[final_answer,multiplication_tool,image_generation_tool],
81
  max_steps=6,
82
- # verbosity_level=1,
83
  grammar=None,
84
  planning_interval=None,
85
  name=None,
 
1
  from smolagents import CodeAgent,DuckDuckGoSearchTool, HfApiModel,load_tool,tool
2
+ from pydantic import BaseModel
3
  import datetime
4
  import requests
5
  import pytz
 
31
 
32
  SmolagentsInstrumentor().instrument(tracer_provider=trace_provider)
33
 
34
+ GAME_API_KEY = os.getenv("GAME_API_KEY")
35
+ GAME_API_BASE_URL = os.getenv("GAME_API_BASE_URL")
36
+
37
+ class Game_Response(BaseModel):
38
+ name: str
39
+ description: str
40
+ year_published: int
41
+ min_players: int
42
+ max_players: int
43
+ users_rated: int
44
+ average_rating: float
45
+ bayes_adjusted_average: float
46
+ complexity: float
47
+
48
  @tool
49
+ def boardgame_lookup_tool(q:str)-> list[Game_Response]:
50
+ """A tool that fetches information about board games
 
51
  Args:
52
+ q: a search term representing part or all of a board game's name or description, prefixed with either "name:" or "description:"
 
53
  """
54
+ url = f'{GAME_API_BASE_URL}/games'
55
+ headers = {'x-api-key': f'{GAME_API_KEY}'}
56
+ response = requests.get(url, headers=headers, params={'q': q, 'search_type': search_type})
57
+ api_data_list = response.json()
58
+ return [Game_Response(name = api_data['name'],
59
+ description = api_data['description'],
60
+ year_published = api_data['year_published'],
61
+ min_players = api_data['min_players'],
62
+ max_players = api_data['max_players'],
63
+ users_rated = api_data['users_rated'],
64
+ average_rating = api_data['average'],
65
+ bayes_adjusted_average = api_data['bayes_average'],
66
+ complexity = api_data['weight']) for api_data in api_data_list]
67
 
68
  @tool
69
  def get_current_time_in_timezone(timezone: str) -> str:
 
89
  model = HfApiModel(
90
  max_tokens=2096,
91
  temperature=0.5,
92
+ #model_id='Qwen/Qwen2.5-Coder-32B-Instruct',# it is possible that this model may be overloaded
93
+ model_id='https://pflgm2locj2t89co.us-east-1.aws.endpoints.huggingface.cloud',
94
  custom_role_conversions=None,
95
  )
96
 
97
 
98
  # Import tool from Hub
99
+ #image_generation_tool = load_tool("agents-course/text-to-image", trust_remote_code=True)
100
 
101
  with open("prompts.yaml", 'r') as stream:
102
  prompt_templates = yaml.safe_load(stream)
103
+
104
  agent = CodeAgent(
105
  model=model,
106
+ tools=[final_answer,boardgame_lookup_tool],
107
  max_steps=6,
108
+ verbosity_level=1,
109
  grammar=None,
110
  planning_interval=None,
111
  name=None,
requirements.txt CHANGED
@@ -3,6 +3,7 @@ smolagents
3
  requests
4
  duckduckgo_search
5
  pandas
 
6
 
7
  opentelemetry-sdk
8
  opentelemetry-exporter-otlp
 
3
  requests
4
  duckduckgo_search
5
  pandas
6
+ pydantic
7
 
8
  opentelemetry-sdk
9
  opentelemetry-exporter-otlp