new tool, get coin price

#1
by Priceman614 - opened
Files changed (1) hide show
  1. app.py +27 -6
app.py CHANGED
@@ -9,14 +9,35 @@ from Gradio_UI import GradioUI
9
 
10
  # Below is an example of a tool that does nothing. Amaze us with your creativity !
11
  @tool
12
- def my_custom_tool(arg1:str, arg2:int)-> str: #it's import to specify the return type
13
  #Keep this format for the description / args / args description but feel free to modify the tool
14
- """A tool that does nothing yet
15
  Args:
16
- arg1: the first argument
17
- arg2: the second argument
18
  """
19
- return "What magic will you build ?"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  @tool
22
  def get_current_time_in_timezone(timezone: str) -> str:
@@ -55,7 +76,7 @@ with open("prompts.yaml", 'r') as stream:
55
 
56
  agent = CodeAgent(
57
  model=model,
58
- tools=[final_answer], ## add your tools here (don't remove final answer)
59
  max_steps=6,
60
  verbosity_level=1,
61
  grammar=None,
 
9
 
10
  # Below is an example of a tool that does nothing. Amaze us with your creativity !
11
  @tool
12
+ def get_coin_price(symbol: str, currency: str = "usd")-> str: #it's import to specify the return type
13
  #Keep this format for the description / args / args description but feel free to modify the tool
14
+ """A tool that fetches the latest price on a cryptocurrency symbol from Coingecko API.
15
  Args:
16
+ symbol: A string representing a valid symbol as CoinGecko's ID, not ticker (e.g., 'bitcoin' not BTC).
17
+ currency: A string representing the currency the value is returned in (e.g., 'usd').
18
  """
19
+ #define the endpoint
20
+ url = f"https://api.coingecko.com/api/v3/simple/price"
21
+
22
+ #format the parameters
23
+ params = {
24
+ "ids": symbol.lower(),
25
+ "vs_currencies": currency.lower()
26
+ }
27
+
28
+ try:
29
+ #make request to endpoint
30
+ response = requests.get(url, params=params)
31
+
32
+ #process response
33
+ if response.status_code == 200:
34
+ data = response.json()
35
+ return data.get(symbol.lower(), {}).get(currency.lower(), None)
36
+ else:
37
+ # returrn verbose error, so the model can observe and ReAct
38
+ return f"Error: {response.status_code}, {response.text}"
39
+ except Exception as e:
40
+ return f"Error fetching price for '{symbol}' valued in currency '{currency}': {str(e)}"
41
 
42
  @tool
43
  def get_current_time_in_timezone(timezone: str) -> str:
 
76
 
77
  agent = CodeAgent(
78
  model=model,
79
+ tools=[final_answer, get_coin_price, get_current_time_in_timezone], ## add your tools here (don't remove final answer)
80
  max_steps=6,
81
  verbosity_level=1,
82
  grammar=None,