Spaces:
Running
Running
#!/usr/bin/python3 | |
# -*- coding: utf-8 -*- | |
import json | |
from typing import List | |
def get_current_weather(location: str, unit: str = None): | |
""" | |
如果函数的名字叫作 “get_current_weather” , | |
那么就需要一个同名 python 脚本 “get_current_weather.py” , | |
同时其中应包含一个名为 “get_current_weather” 的函数。 | |
""" | |
unit = unit or "fahrenheit" | |
if "tokyo" in location.lower(): | |
return json.dumps({"location": location, "temperature": "10", "unit": "celsius"}) | |
elif "san francisco" in location.lower(): | |
return json.dumps({"location": location, "temperature": "72", "unit": "fahrenheit"}) | |
else: | |
return json.dumps({"location": location, "temperature": "22", "unit": "celsius"}) | |
def kwargs() -> List[str]: | |
""" | |
函数调用时会根据此处返回的 key 来创建 kwargs 关键字参数,如果存在 key 的值没有提供,则会将其赋值为 None。 | |
因此在定义函数时有默认值的参数的值应该为 None,而其真正的默认值可在函数内部赋值,以免被 kwargs 中的 None 覆盖。 | |
""" | |
return ["location", "unit"] | |
def main(): | |
tools = [ | |
{ | |
"type": "function", | |
"function": { | |
"name": "get_current_weather", | |
"description": "Get the current weather in a given location", | |
"parameters": { | |
"type": "object", | |
"properties": { | |
"location": { | |
"type": "string", | |
"description": "The city and state, e.g. San Francisco, CA", | |
}, | |
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}, | |
}, | |
"required": ["location"], | |
}, | |
}, | |
} | |
] | |
tools_ = json.dumps(tools, ensure_ascii=False) | |
print(tools_.replace("\"", "\\\"")) | |
result = get_current_weather("beijing") | |
print(result) | |
return | |
if __name__ == '__main__': | |
main() | |