luca-ragazzi commited on
Commit
f527e64
·
verified ·
1 Parent(s): c0f6e4b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +28 -6
app.py CHANGED
@@ -9,14 +9,36 @@ 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 +77,7 @@ with open("prompts.yaml", 'r') as stream:
55
 
56
  agent = CodeAgent(
57
  model=model,
58
- tools=[final_answer, DuckDuckGoSearchTool], ## 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
+ # set to lowercase for api compatibility and consistency
20
+ symbol = symbol.lower()
21
+ currency = currency.lower()
22
+
23
+ #define the endpoint with return headers - https://docs.coingecko.com/v3.0.1/reference/simple-price
24
+ url = "https://api.coingecko.com/api/v3/simple/price?ids=" + symbol + "&vs_currencies=" + currency
25
+ headers = {"accept": "application/json"}
26
+
27
+ try:
28
+ #make request to endpoint
29
+ response = requests.get(url, headers=headers)
30
+
31
+ #process response
32
+ if response.status_code == 200:
33
+ data = response.json()
34
+ usd_value = data[symbol][currency]
35
+ return f"The price of " + symbol + " in " + currency + " is " + f"${usd_value:,.2f}" #format as currency
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
 
43
  @tool
44
  def get_current_time_in_timezone(timezone: str) -> str:
 
77
 
78
  agent = CodeAgent(
79
  model=model,
80
+ tools=[final_answer, get_coin_price, get_current_time_in_timezone, DuckDuckGoSearchTool()], ## add your tools here (don't remove final answer)
81
  max_steps=6,
82
  verbosity_level=1,
83
  grammar=None,