本文将实践如何在 LLM(大语言模型)
调用工具函数时进行审核,即由人来确定是否应该调用工具函数。
本次使用
llama3.1
和MFDoom/deepseek-r1-tool-calling:7b
进行演练。deepseek-r1
不支持langchain
的 bind_tools 方法。
准备
在正式开始撸代码之前,需要准备一下编程环境。
-
计算机
本文涉及的所有代码可以在没有显存的环境中执行。 我使用的机器配置为:- CPU: Intel i5-8400 2.80GHz
- 内存: 16GB
-
Visual Studio Code 和 venv
这是很受欢迎的开发工具,相关文章的代码可以在Visual Studio Code
中开发和调试。 我们用python
的venv
创建虚拟环境, 详见:
在Visual Studio Code中配置venv。 -
Ollama
在Ollama
平台上部署本地大模型非常方便,基于此平台,我们可以让langchain
使用llama3.1
、qwen2.5
等各种本地大模型。详见:
在langchian中使用本地部署的llama3.1大模型 。
定义工具方法
我们先定义两个工具方法,用于后面的测试:
def create_tools():
@tool
def count_emails(last_n_days: int) -> int:
"""计算电子邮件数量的函数。"""
print(f'count_emails is called:{
last_n_days}')
return last_n_days * 2
@tool
def send_email(message: str, recipient: str) -> str:
"""发送电子邮件的函数。"""
print(f'send_email is called:{
recipient}:{
message}')
return f"邮件已经成功发送至:{
recipient}."
tools = [count_emails, send_email]
return tools
too