arcstep / illufly

✨🦋 illufly 是自我进化的 Agent 框架: 基于自我进化,快速创造价值
https://github.com/arcstep/illufly/wiki
MIT License
36 stars 5 forks source link

测试 单智能体和工具回调 遇 Extra inputs are not permitted #5

Closed liangpn closed 1 day ago

liangpn commented 1 day ago

这是我的代码:

def get_current_weather(location: str=None): """获取城市的天气情况""" return f"{location}今天是晴天。 "

qwen = ChatOpenAI(model=openai_model, tools=[get_current_weather])

qwen("今天广州可以晒被子吗")

这是日志:

(illufly) PS E:\localpath\AI\illufly_demo> python .\test_RAG.py 要判断今天广州是否适合晒被子,我需要先查询广州今天的天气情况。我将查询广州今天的天气预报。

[FINAL_TOOLS_CALL] [{"index": 0, "id": "chatcmpl-tool-576c28ae7fe44cde8ffeed533d5e3a02", "type": "function", "function": {"name": "get_current_weather", "arguments": "{\"location\": \"\u5e7f\u5dde\"}"}}] 广州今天是晴天。

Traceback (most recent call last): File "E:\localpath\AI\illufly_demo\test_RAG.py", line 101, in qwen("今天广州可以晒被子吗") File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\illufly\core\runnable\base.py", line 133, in call
return self.handle_sync_call(*args, verbose=verbose, handlers=handlers, action_method=method, kwargs) File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\illufly\core\runnable\base.py", line 150, in handle_sync_call for block in resp: File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\illufly\core\runnable\agent\chat\base.py", line 273, in call for block in self.generate(chat_memory, args, kwargs): File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\illufly\community\openai\chat.py", line 67, in generate completion = self.client.chat.completions.create(_kwargs) File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\openai_utils_utils.py", line 274, in wrapper return func(args, kwargs) File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\openai\resources\chat\completions.py", line 815, in create return self._post( File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\openai_base_client.py", line 1277, in post return cast(ResponseT, self.request(cast_to, opts, stream=stream, stream_cls=stream_cls)) File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\openai_base_client.py", line 954, in request return self._request( File "E:\path\Anaconda\Anaconda2023\envs\illufly\lib\site-packages\openai_base_client.py", line 1058, in _request raise self._make_status_error_from_response(err.response) from None openai.BadRequestError: Error code: 400 - {'object': 'error', 'message': '1 validation error for ValidatorIterator\n0.index\n Extra inputs are not permitted [type=extra_forbidden, input_value=0, input_type=int]\n For further information visit https://errors.pydantic.dev/2.9/v/extra_forbidden', 'type': 'BadRequestError', 'param': None, 'code': 400}

经排查是因为在 illufly\community\openai\chat generate方法中的 image

注释这一行就可以了,请问是openai的版本不一致吗?

arcstep commented 1 day ago

看样子是 SDK 直接拒绝了这个参数,有可能是 windows 和 mac 的 openai SDK 在审查参数合规性方面的差别。 我按照你的方法注释了这一行,在 mac 下也都正常工作,看来这样可以获得最大兼容性。

非常感谢!

https://github.com/arcstep/illufly/blob/8cd13bcd595e627f2f8d40312ece60f3a17ff3eb/illufly/community/openai/chat.py

liangpn commented 21 hours ago

看样子是 SDK 直接拒绝了这个参数,有可能是 windows 和 mac 的 openai SDK 在审查参数合规性方面的差别。 我按照你的方法注释了这一行,在 mac 下也都正常工作,看来这样可以获得最大兼容性。

非常感谢!

https://github.com/arcstep/illufly/blob/8cd13bcd595e627f2f8d40312ece60f3a17ff3eb/illufly/community/openai/chat.py

我使用Linux环境测试了一下,确实不注释这一行也没问题;看来确实是windows下openai sdk 的问题 但今天再次在windows 把这一段取消注释了,执行测试,也没报错了,这就奇了怪了。你们有windows可以在0.5.2版本再测试看看会不会有问题 不清楚您一开始涉及加上 index 这个参数是出于什么考虑呢?

这边部署 是使用conda创建python 3.10 后 pip install illufly 直接执行 embeddings = OpenAIEmbeddings( model=openai_embeddings_model,
base_url=openai_embeddings_url, dim=1024 ) db = FaissDB(embeddings=embeddings, top_k=3) db.load("./docs") qwen = ChatOpenAI(openai_model, knowledge=[db]) qwen("请你帮我写封一句话情书,深情又逗比的那种") print(qwen.memory)

会提示 pip install -U openai,升级后openai是1.53.0版本 @arcstep