返回顶部
热门问答 更多热门问答
技术文章 更多技术文章

详解Palantir AIP的两个利器:LLM和Tool

[复制链接]
链载Ai 显示全部楼层 发表于 1 小时前 |阅读模式 打印 上一主题 下一主题

在Palantir AIP的Logic模块中,UseLLM节点是核心逻辑块,而Tool则是让LLM具备行动能力的关键。LLM通过工具Tool跟客户业务进行深度交互。所谓从决策到行动,主要靠的是LLM和Tool这两个利器。

最重要的两个工具是调用函数(executefunciton)和执行操作(applyaction)这两个。

一、调用函数(Callfunction)工具

给LLM配置Callfunction意味着允许LLM根据用户的指令,自主决定调用Foundry中预先定义好的TypeScript函数或由logic编排好的logic函数。

在AIPLogic中配置之前,必须在有一个已经发布好Function。函数定义时必须有明确的入参和返回值。文档注释是最关键的一点。LLM看不懂代码逻辑,它只能通过写的函数注释(/**...*/)来理解这个函数是做什么的、参数需要什么格式。

配置步骤详解

第一步:添加UseLLM节点

在AIPLogic的编辑器画布上,添加一个"UseLLM"块。

第二步:启用Tools(工具)

点击选中"UseLLM"节点。在右侧(或底部)的配置面板中,找到Tools部分。

点击Addtool(添加工具)。

在弹出的菜单中选择Callfunction。

第三步:选择目标函数

在出现的搜索框中,输入编写好的函数名称,并选中该函数。

第三步:配置参数映射

这是配置的核心。当选中函数后,你会看到该函数定义的所有输入参数。需要告诉AIPLogic如何处理这些参数。

通常有以下几种模式:

  • LLMGenerated(由LLM生成)

    • 推荐用法:希望LLM根据用户的自然语言Prompt提示词自动分析出应该填入什么参数。例如:用户说“帮我查询ID为123的订单”,函数需要orderId。LLM会自动提取123并填入。

      配置方法:通常保持默认,或者选择"Inferfromcontext"/"Modelgenerated"。此时,LLM会读取函数的参数名称和类型定义来生成JSON。

  • Fixed/StaticValue(固定值)

    • 无论用户说什么,这个参数永远传入一个固定的值。比如有一个通用查询函数,但在这个Logic中只想让它查询“Active”状态的条目,可以将status参数硬编码为"Active"。

  • Variable(变量映射)

    • 将Logic流程中上一步骤产生的变量直接传给函数,而不让LLM去猜。

第四步:配置函数执行后的行为

当LLM决定调用函数后,AIPLogic会暂停LLM的生成,去后台执行这个函数,然后拿到返回值。需要决定拿到返回值后做什么:

  • FeedbacktoLLM(传回给LLM)

    1. 默认行为。函数的返回值(例如查询到的库存数量、更新成功的消息)会被作为上下文再次喂给LLM。LLM会根据返回值生成最终的自然语言回复。例如:“库存查询成功,当前剩余50件。”

    • PasstoLogicOutput(输出到Logic变量)

        1. 如果只是利用LLM来做意图识别并提取参数来运行函数,而不需要LLM再说话,可以直接把函数的结果作为整个Logic的输出。

        为了让Callfunction准确工作,以下几点至关重要:

        (1)良好的函数描述(DescriptionisKing)

        LLM是根据函数的DisplayName和Description来决定是否调用该工具的。

        代码示例:

        codeTypeScript

        /** *Searchesforemployeesbasedontheirdepartmentandrole. *Usethiswhentheuseraskstofindstafflists. * *@paramdepartmentThedepartmentcode(e.g.,'IT','HR') *@paramroleThejobtitle */@Function() publicsearchEmployees(department:string,role:string)romise<Employee[]>{...}

        如果描述写得含糊不清(例如只写了"Searchfunction"),LLM可能不知道何时使用它,或者参数提取错误。

        (2)尽量使用简单类型

        虽然FoundryFunctions支持传递对象(Objects),但在AIPLogic的Tool调用中,让LLM生成String(字符串),Number(数字),Boolean(布尔值)或Date(日期)是最稳定的。尽量避免让LLM直接构造复杂的JSON对象作为参数,除非模型非常强(如GPT-5)。

        (3)错误处理

        LLM可能会产生幻觉参数(比如捏造一个不存在的ID)。函数内部应该包含try-catch或逻辑判断,如果查不到数据,应该返回清晰的字符串(如"NoorderfoundwithID123"),而不是直接抛出代码异常。这样LLM收到"Noorderfound"后,可以优雅地回复用户“抱歉,没找到这个订单”。

        假设配置了一个updateCustomerEmail(id,newEmail)的函数工具。

        用户输入:“把ID是C-001的客户邮箱改为test@example.com”。

        UseLLM节点

        1. 接收Prompt。

        1. 查看可用工具列表。

        1. 判定:用户的意图匹配updateCustomerEmail的描述。

        1. 提取参数:id="C-001",newEmail="test@example.com".

        1. 生成结构化调用请求(SystemAction)。

        AIPLogic引擎

        1. 拦截调用请求。

        1. 在Foundry后端执行函数。

        1. 获取返回值:{success:true,message:"Emailupdated"}.

        UseLLM节点(再次被激活):

        1. 看到函数的返回值。

        1. 生成最终回复:“已成功将客户C-001的邮箱更新为test@example.com。”

        配置Callfunction的核心不在于界面点击,而在于函数的语义化定义。确保函数名、参数名和注释清晰易懂,LLM就能像人类开发者一样准确地调用它。

        二、执行操作(applyaction)工具

        在Palantir AIPLogic中,配置UseLLM节点以使用Tool(工具)中的ApplyAction(执行动作)是一个强大的功能。这允许LLM根据对话上下文,自主决定修改本体(Ontology)中的数据、如创建对象、更新属性、删除对象等。

        在AIPLogic中配置之前,必须确保在OntologyManager(本体管理器)中已经定义好了相应的Action(行动)。

        例如:有一个名为UpdateCaseStatus的Action,它接受CaseIDNewStatus作为参数。关键点是确保在OntologyManager中为该Action及其参数编写了清晰的Description(描述)。LLM极其依赖这些描述来理解何时调用该工具以及如何填充参数。

        详细配置步骤

        (1)添加或选择"UseLLM"节点

        在Logic流程图中,添加一个新的UseLLM节点(或者点击已有的节点)。

        (2)启用Tools(工具)功能

        在右侧的配置面板中,向下滚动找到Tools部分。点击Addtool(添加工具)按钮。在弹出的菜单中,选择Actions。

        (3)选择具体的Action

        系统会弹出一个选择框,列出所有可用的Ontology Actions。搜索并选择想要授权给LLM使用的那个Action(例如UpdateCaseStatus)。选中后,点击确认。

        (4)配置Action参数

        这是最关键的一步。当Action被添加到工具列表中后,会看到它的参数列表。通常有两种配置模式,但在UseLLM的Tool语境下,我们主要依赖自动推断(LLM Inferred)

        • Infer from context(从上下文推断):

          • 默认情况下,Palantir会让LLM根据用户的Prompt和对话历史自动决定填入什么参数。原理是LLM会先读取Action的定义(例如参数TargetDate是日期类型),然后分析Prompt(例如“把截止日期推迟到下周五”),自动计算并填入NextFriday的具体日期。

        • Force/Hardcode(强制指定-较少用):

          • 如果希望某个参数永远是固定值(例如ModifiedBy永远填"AIBot"),可以手动锁定该参数的值,不让LLM自由发挥。

        (5)编写Prompt提示词工程

        仅仅添加了工具是不够的,需要在Prompt中引导LLM使用它。

        • System Prompt(系统提示词): 明确告诉LLM它的角色和权限。比如"你是一个客服助手。当用户要求更改工单状态时,请使用提供的UpdateCaseStatus工具。在调用工具前,请确保你已经有了工单ID和新的状态。"

        • Few-ShotExamples(少样本示例-可选但推荐):

          • 在配置面板中,可以提供示例(Examples)。

            UserInput:"把工单123关掉。"

            ModelOutput展示模型应该如何生成ToolCall的结构,通常AIP界面里有专门的Example录入区,或者直接写在Prompt里)。

        当配置好并运行Logic时,流程如下:

        (1)输入分析: LLM接收用户输入(例如:“把当前这个案子的优先级改为高”)。

        (2)工具检索: LLM查看它可用的Tools列表,读取UpdateCasePriorityAction的描述。

        (3)推理决策: LLM判断:“用户的意图匹配UpdateCasePriority工具。”

        (4)参数提取: LLM从上下文中提取CaseID(可能来自前序节点的变量)和Priority=High

        (5)生成调用请求(ToolCall):

        1. 注意在AIPLogic的某些配置模式下,LLM节点输出的是一个"建议的动作调用"(Proposed Action),而不是直接在数据库中执行。如果节点配置为Execute Tools(执行工具):Logic引擎会拦截这个调用请求,实际去执行OntologyAction,并将执行结果(成功/失败)返回给LLM。如果节点配置仅为Plan(规划):它会输出一个JSON格式的计划,用户需要后续接一个专门的ApplyAction节点来实际执行。但在最新的"Use LLM"增强版中,通常勾选"Allow execution"即可自动闭环。

        Apply action工具配置中,描述至关重要,如果在Ontology中Action的参数名为p_id,LLM可能看不懂。需要在Ontology Manager中将其描述为"The unique identifier of the project"。LLM依靠这些元数据来准确填参。

        为了确保安全性,不要给LLM具有破坏性的Action(如DeleteAllData),除非有严格的审批流。AIPLogic通常运行在当前用户的权限上下文中。如果用户没权限执行该Action,LLM调用也会失败。

        处理歧义也至关重要,在Prompt中指示LLM:如果缺少必要参数(例如用户只说了“改状态”但没说改成什么),不要瞎猜,而是反问用户获取更多信息,然后再调用工具。

        通过使用Logic的Debugger模式可以看到LLM输出的原始思维链(Chain of Thought),检查它是否正确识别了工具,以及它提取的参数值是否正确。

        配置Apply Action的核心在于在Use LLM节点的Tools栏位中挂载Ontology Action,并依赖Ontology中良好的元数据描述配合清晰的Prompt指令,让LLM能够自动推断参数并发起调用。


      回复

      使用道具 举报

      您需要登录后才可以回帖 登录 | 立即注册

      本版积分规则

      链载AI是专业的生成式人工智能教程平台。提供Stable Diffusion、Midjourney AI绘画教程,Suno AI音乐生成指南,以及Runway、Pika等AI视频制作与动画生成实战案例。从提示词编写到参数调整,手把手助您从入门到精通。
      • 官方手机版

      • 微信公众号

      • 商务合作

      • Powered by Discuz! X3.5 | Copyright © 2025-2025. | 链载Ai
      • 桂ICP备2024021734号 | 营业执照 | |广西笔趣文化传媒有限公司|| QQ