Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问是否支持langchain里的create_openai_tools_agent或者create_openai_functions_agent? #15

Closed
cgq0816 opened this issue Feb 6, 2024 · 13 comments
Assignees

Comments

@cgq0816
Copy link

cgq0816 commented Feb 6, 2024

用qwen1.5-14b-chat进行测试,发现用langchain的这两个agent,均不能调用工具,所以请问一下qwen1.5支持langchain的这两个agent吗?如果支持,该如何使用呢

@JianxinMa
Copy link
Contributor

请问方便发一下您测试langchain用的脚本吗?我们看下。以及是用vllm还是什么框架起的服务?

@cgq0816
Copy link
Author

cgq0816 commented Feb 7, 2024

请问方便发一下您测试langchain用的脚本吗?我们看下。以及是用vllm还是什么框架起的服务?

1、用的langchain官网的调用示例
https://api.python.langchain.com/en/latest/agents/langchain.agents.openai_tools.base.create_openai_tools_agent.html#

https://api.python.langchain.com/en/latest/agents/langchain.agents.openai_functions_agent.base.create_openai_functions_agent.html/
2、Qwen1.5-14B-Chat 用的是together.ai里的
model = "Qwen/Qwen1.5-14B-Chat"
llm = ChatOpenAI(model_name=model, openai_api_base=COMMON_CONFIG.get("together_api_base"),
openai_api_key=COMMON_CONFIG.get("together_api_key"), max_tokens=max_tokens,
temperature=temperature, top_p=1.0, max_retries=max_retries, request_timeout=request_timeout,
)

@cgq0816
Copy link
Author

cgq0816 commented Feb 7, 2024

请问方便发一下您测试langchain用的脚本吗?我们看下。以及是用vllm还是什么框架起的服务?

1、用的langchain官网的调用示例 https://api.python.langchain.com/en/latest/agents/langchain.agents.openai_tools.base.create_openai_tools_agent.html#

https://api.python.langchain.com/en/latest/agents/langchain.agents.openai_functions_agent.base.create_openai_functions_agent.html/ 2、Qwen1.5-14B-Chat 用的是together.ai里的 model = "Qwen/Qwen1.5-14B-Chat" llm = ChatOpenAI(model_name=model, openai_api_base=COMMON_CONFIG.get("together_api_base"), openai_api_key=COMMON_CONFIG.get("together_api_key"), max_tokens=max_tokens, temperature=temperature, top_p=1.0, max_retries=max_retries, request_timeout=request_timeout, )

使用langchain中的ChatTongyi方法也没有调用function call
from langchain_community.chat_models.tongyi import ChatTongyi
image

langchain版本
langchain 0.1.0
langchain-community 0.0.10
langchain-core 0.1.19

@JianxinMa JianxinMa self-assigned this Feb 7, 2024
@JianxinMa
Copy link
Contributor

您好,经过排查,是工程接口问题,和模型无关。

详情如下:

  • 按您的方式创建后,我打印了 langchain 调用的中间环节,发现 langchain 是在使用 function_calling (tool calling) 接口,但是当前 together 和 dashscope 应该都还没有开放 function calling 功能,因此实际没有生效。

解决方案一:

解决方案二:

  • 您也许可以尝试 langchain 的其他不依赖 function calling 的 agent 实现,比如 ReAct。但我们对 langchain 并不熟悉,因此无法给出更具体的建议。

@JianxinMa
Copy link
Contributor

另外,我在打印中间环节的时候,发现调用 ChatTongyi 时有细节需要注意:

model = ChatTongyi(
    model="qwen1.5-72b-chat",  # 注意是model,不是model_name
)

而不是如您截图的

model = ChatTongyi(
    model_name="qwen1.5-72b-chat",  # 错误!实际没生效,会错误调用成 qwen-turbo
)

@cgq0816
Copy link
Author

cgq0816 commented Feb 18, 2024

另外,我在打印中间环节的时候,发现调用 ChatTongyi 时有细节需要注意:

model = ChatTongyi(
    model="qwen1.5-72b-chat",  # 注意是model,不是model_name
)

而不是如您截图的

model = ChatTongyi(
    model_name="qwen1.5-72b-chat",  # 错误!实际没生效,会错误调用成 qwen-turbo
)

你好,有一个问题想请教一下,使用openai的时候提示以下问题,该如何解决呢
openai.error.InvalidRequestError: Qwen/Qwen1.5-14B-Chat doesn't support constraints

@JianxinMa
Copy link
Contributor

你好,有一个问题想请教一下,使用openai的时候提示以下问题,该如何解决呢 openai.error.InvalidRequestError: Qwen/Qwen1.5-14B-Chat doesn't support constraints

这个报错就是因为langchain的这个agent实现使用了function calling、但是together ai等服务提供商并没有为qwen提供function calling功能。

可以参见我前面回复提到的解决方案一、解决方案二。

@Dancing-Github
Copy link

你好,问个关于function call的问题,之前版本发布的函数调用还支持在Qwen 1.5使用吗
https://github.com/QwenLM/Qwen/blob/main/examples/function_call_examples.py

@JianxinMa
Copy link
Contributor

你好,问个关于function call的问题,之前版本发布的函数调用还支持在Qwen 1.5使用吗 https://github.com/QwenLM/Qwen/blob/main/examples/function_call_examples.py

  • function_call_examples.py里面langchain那个case可能可以work —— 但我还没时间测试,如果有问题欢迎提issues。
  • 至于其他的function call examples,模型是支持的。但是因为老的 openai_api.py 代码还没时间改到支持1.5的,因此要测试目前只能先通过 Qwen-Agent 项目来支持 —— 参见 https://github.com/QwenLM/Qwen-Agent/blob/main/examples/function_calling.py

@zh2024

This comment was marked as off-topic.

@samosun
Copy link

samosun commented Apr 9, 2024

@JianxinMa 您好,想问下dashscope 的function call实现已经上线了吗? 会与 Qwen-Agent 项目封装的 function calling 接口 有什么区别?

@JianxinMa
Copy link
Contributor

JianxinMa commented Apr 9, 2024

@JianxinMa 您好,想问下dashscope 的function call实现已经上线了吗? 会与 Qwen-Agent 项目封装的 function calling 接口 有什么区别?

上了,和qwen-agent的区别不大。dashscope用的tool_calls的格式(如果用langchain注意看是不是用的tool_calls而不是function_call): https://help.aliyun.com/zh/dashscope/developer-reference/api-details?disableWebsiteRedirect=true#86ef4d304bwsb

@jklj077 jklj077 closed this as completed Jun 20, 2024
@Zhuytt20
Copy link

query = "计算 3 + 12? 以及 11 * 49?"

print(llm_with_tools.invoke(query).tool_calls)from langchain_core.output_parsers import PydanticToolsParser
from pydantic import BaseModel, Fieldclass add(BaseModel):
"""Add two integers."""

a: int = Field(..., description="First integer")
b: int = Field(..., description="Second integer")class multiply(BaseModel):
"""Multiply two integers."""

a: int = Field(..., description="First integer")
b: int = Field(..., description="Second integer")chain = llm_with_tools | PydanticToolsParser(tools=【add, multiply】)

print(chain.invoke(query))

【{'name': 'add', 'args': {'a': 3, 'b': 12}, 'id': 'call_2fba6e0cbda543ba977d18', 'type': 'tool_call'}】
【add(a=3, b=12)】
为什么只能调用一个呢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants