我用的grok2,本节代码跑不通。需要清理输入。改动如下:
```
def clean_tool_input(func):
"""装饰器:清理传递给工具函数的输入"""
@wraps(func) # 这会保留原始函数的元数据,包括 docstring
def wrapper(input_str: str, *args, **kwargs):
# 清理输入,只取第一行并去除空白字符
cleaned_input = input_str.split('\n')[0].strip()
return func(cleaned_input, *args, **kwargs)
return wrapper
@tool
@clean_tool_input
def calculate(what: str) -> float:
"""Runs a calculation and returns the number - uses Python so be sure to use floating point syntax if necessary"""
return eval(what)
@tool
@clean_tool_input
def ask_fruit_unit_price(fruit: str) -> str:
"""Asks the user for the price of a fruit"""
if fruit.casefold() == "apple":
return "Apple unit price is 10/kg"
elif fruit.casefold() == "banana":
return "Banana unit price is 6/kg"
else:
return "{} unit price is 20/kg".format(fruit)
```
完整代码在此:https://github.com/groklab/misc/blob/main/geektime-llm-zhengye-column/lec14.ipynb