wphoenix commited on
Commit
54813fb
·
verified ·
1 Parent(s): 020a27a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +30 -16
app.py CHANGED
@@ -7,6 +7,7 @@ from tools.final_answer import FinalAnswerTool
7
  #from requests import Request, Session
8
  from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
9
  import json
 
10
 
11
  from Gradio_UI import GradioUI
12
 
@@ -42,31 +43,44 @@ def my_custom_tool(arg1:str, arg2:int)-> str: #it's important to specify the ret
42
  return "What magic will you build ?"
43
 
44
  @tool
45
- def fetch_active_crypto()-> dict[str, int]: #it's important to specify the return type
46
- #Keep this format for the description / args / args description but feel free to modify the tool
47
- """A tool that fetches all active crypto by market cap in USD
 
 
 
48
  """
49
  url = 'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
50
  parameters = {
51
- 'start':'1',
52
- 'limit':'5000',
53
- 'convert':'USD'
54
  }
55
  headers = {
56
- 'Accepts': 'application/json',
57
- 'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
58
  }
59
-
60
  session = requests.Session()
61
  session.headers.update(headers)
62
-
63
  try:
64
- response = session.get(url, params=parameters)
65
- # data = json.loads(response.text)
66
- # return top_10_items_from_json(data)
67
- return top_10_items_from_json(response.text)
68
- except (ConnectionError, Timeout, TooManyRedirects) as e:
69
- return e
 
 
 
 
 
 
 
 
 
 
70
 
71
 
72
  @tool
 
7
  #from requests import Request, Session
8
  from requests.exceptions import ConnectionError, Timeout, TooManyRedirects
9
  import json
10
+ from typing import Dict, Any, Optional
11
 
12
  from Gradio_UI import GradioUI
13
 
 
43
  return "What magic will you build ?"
44
 
45
  @tool
46
+ def fetch_active_crypto() -> Optional[Dict[str, Any]]:
47
+ """A tool that fetches all active crypto by market cap in USD.
48
+
49
+ Returns:
50
+ Optional[Dict[str, Any]]: A dictionary containing the top 10 cryptocurrencies by market cap,
51
+ or None if an error occurs.
52
  """
53
  url = 'https://sandbox-api.coinmarketcap.com/v1/cryptocurrency/listings/latest'
54
  parameters = {
55
+ 'start': '1',
56
+ 'limit': '5000',
57
+ 'convert': 'USD'
58
  }
59
  headers = {
60
+ 'Accepts': 'application/json',
61
+ 'X-CMC_PRO_API_KEY': 'b54bcf4d-1bca-4e8e-9a24-22ff2c3d462c',
62
  }
63
+
64
  session = requests.Session()
65
  session.headers.update(headers)
66
+
67
  try:
68
+ response = session.get(url, params=parameters)
69
+ response.raise_for_status() # Raise an exception for HTTP errors
70
+ data = json.loads(response.text)
71
+
72
+ # Extract the top 10 cryptocurrencies by market cap
73
+ if 'data' in data:
74
+ sorted_crypto = sorted(data['data'], key=lambda x: x['quote']['USD']['market_cap'], reverse=True)
75
+ top_10 = sorted_crypto[:10]
76
+ return {crypto['name']: crypto['quote']['USD'] for crypto in top_10}
77
+ else:
78
+ print("No data found in the response.")
79
+ return None
80
+
81
+ except (ConnectionError, Timeout, TooManyRedirects, requests.exceptions.HTTPError) as e:
82
+ print(f"An error occurred: {e}")
83
+ return None
84
 
85
 
86
  @tool