Langchain-Chatchat icon indicating copy to clipboard operation
Langchain-Chatchat copied to clipboard

使用模型chatglm3-6b,如何在langchain-chatchat交互中调用到chatglm3-6b自定义的function,请提供实例

Open Andy1018 opened this issue 11 months ago • 1 comments

使用模型chatglm3-6b,如何在langchain-chatchat交互中调用到chatglm3-6b自定义的function,请提供实例

Andy1018 avatar Mar 08 '24 08:03 Andy1018

嘿,@Andy1018!很高兴再次见到你。希望一切都好!

根据我在Langchain-Chatchat仓库中找到的信息,你可以通过以下步骤在Langchain-Chatchat交互中调用到ChatGLM3-6B模型的自定义函数:

  1. 首先,你需要在model_config.py文件中包含你的本地API地址,如这个issue中所建议的。

  2. 然后,你需要查看server/chat/chat.py文件中的get_ChatOpenAI函数,这个函数可能负责获取语言模型。这个函数接受model_nametemperaturemax_tokenscallbacks等参数,这些参数是OpenAI API调用的典型参数。如果get_ChatOpenAI的实现是通过HTTP请求,你可能需要修改它以指向你的本地API。

  3. 最后,你需要将OpenAI API端点替换为你自己的,并使用openai-api作为模型名称。

以下是一个如何在Langchain-Chatchat交互中调用到ChatGLM3-6B模型的自定义函数的示例:

from langchain.chains.llm import BaseLanguageModel
from langchain.tools.base import BaseTool

# 假设我们有一个自定义函数,我们想要在ChatGLM3-6B模型中调用它
def custom_function(param1, param2):
    # 这里是自定义函数的逻辑
    return f"处理了参数 {param1} 和 {param2}"

# 初始化ChatGLM3-6B模型和工具
llm = BaseLanguageModel()  # 这里应该是初始化你的ChatGLM3-6B模型的代码
tools = [BaseTool(name="custom_function", function=custom_function)]  # 将自定义函数封装为工具

# 初始化agent
agent = initialize_glm3_agent(
    tools=tools,
    llm=llm,
    prompt="你好,请问你需要什么帮助?"
)

# 假设用户的输入
user_input = "我想要调用自定义函数,参数1是'hello',参数2是'world'。"

# 处理用户输入
response = agent.handle_message(user_input)

print(response)

在这个例子中,我们首先定义了一个custom_function函数,这个函数接受两个参数并返回一个字符串。然后,我们将这个函数封装成一个BaseTool对象,并将其添加到工具列表中。通过调用initialize_glm3_agent函数,我们创建了一个agent,它可以使用这个自定义函数。最后,我们模拟了一个用户输入,调用agent.handle_message来处理这个输入,并打印出响应。

这个例子展示了如何在Langchain-Chatchat交互中调用到ChatGLM3-6B模型的自定义函数。需要注意的是,这里的BaseLanguageModelBaseTool的初始化可能需要根据实际情况进行调整,因为这里的代码是为了示例而简化的。

关于BaseLanguageModel类的具体结构以及如何在Langchain-Chatchat代码库中用它来初始化ChatGLM3-6B模型,我在仓库中没有找到答案,可能需要在其他地方找到答案,或者我可能遗漏了它。

以上是我根据在Langchain-Chatchat仓库中找到的信息给出的答案,实际的实现可能会有所不同,可能需要根据你的具体情况进行调整。

Sources

About Dosu

This response is meant to be useful and save you time. It is not meant to be a precise solution, but rather a starting point for your own research.

Help me be more useful! Please leave a 👍 if this is helpful and 👎 if it is irrelevant.

If you want to continue the conversation, start your reply with @dosu-bot.

dosubot[bot] avatar Mar 08 '24 08:03 dosubot[bot]

这个问题已经被标记为 stale ,因为它已经超过 30 天没有任何活动。

github-actions[bot] avatar Apr 07 '24 21:04 github-actions[bot]