在现代AI应用中,工具通常需要接收一些仅在运行时才知道的参数值。例如,工具逻辑可能需要使用发出请求的用户ID。然而,这些参数不应该由LLM(大型语言模型)控制,因为这可能导致安全风险。因此,应该由应用程序逻辑来固定这些参数,而LLM只负责控制那些可由模型生成的参数。
本文将指导您如何避免模型生成特定工具参数,并在运行时直接注入这些参数。
技术背景介绍
在使用LangChain时,您可能需要将诸如用户ID这样的参数绑定到工具上。这些参数在请求发出时才会确定,我们需要确保这些参数不会被LLM意外生成。
核心原理解析
LangChain提供了InjectedToolArg
注解来标识某些参数将在运行时注入,这样模型就不会生成这些参数。
代码实现演示
下面我们将展示如何使用InjectedToolArg
来标识user_id
参数,以及如何在运行时注入该参数。
from typing import List
from langchain_core.tools import InjectedToolArg, tool
from typing_extensions import Annotated
# 定义一个字典来存储用户的宠物
user_to_pets = {
}
@tool(parse_docstring