Browser-use 调用代理大模型的问题与解决方法
Browser-use 智能处理网站数据
通过自然语言描述的任务,browser-use 可以自动获取网页数据,自动执行任务,某种程度上取代人工。
如果使用openai等官方的大模型,官网的方法可以直接运行,下面是在使用其他大模型遇到的一些问题。
先说明一下环境版本:
- browser-use 0.1.36
- python 3.11
阿里云百炼平台qwen-plus和qwen-max
早期的browser-use 版本,比如browser-use==0.1.18的时候,直接使用langchain_community.chat_models.tongyi.ChatTongyi的接口作为browser-use的llm参数没有任何问题。
但是升级到0.1.36版本之后,直接使用会报错:
messages with role "tool" must be a response to a preceeding message
报错的原因升级之后在于Tool的调用记录会放到历史里面去,但是Tongyi在处理前面的assistant 消息时跟Langchain 的标准接口不一致,tool角色前面必须是tool_calls,大概率是ChatTongyi 没有跟着演变。
在使用千问max 还可能会遇到一个问题,就是大模型没有走调用工具,返回的结果是普通的回答,解决方式是调用模型的时候指定tool_choice参数:
model_kwargs={
"temperature": 0.85, 'tool_choice':{
"type": "function", "function": {
"name": "AgentOutput"}}}
修复方式
更正方式, 预先处理ChatTongyi的AIMessage:
class ChatTongYi4Tool(ChatTongyi):
"""
当前通义千问对AIMessage的处理不是很好,需要对tool_calls进行特殊处理;如果后续通义千问ChatTongyi有改进可以去掉这个类
"""
def __init__(self):
model_name = get_config().get("dashscope_model_name", "qwen-plus")
api_key = get_config().get("dashscope_api_key")
super().__init__(model