
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
使用@tool装饰器,可以将普通函数转换为langchain函数@tool"""两个整数相加"""3add_number 两个整数相加 {'a': {'title': 'A', 'type': 'integer'}, 'b': {'title': 'B', 'type': 'integer'}}可以通过函数.name等获取函数的信息,将其交给大模型。通过@tool装饰器的函数,也是一个Runnab
但不是使用传统的 GUI,而是让 LLM 去询问用户的 MBTI 和问题,多次对话,直到 LLM 认为收集到了足够的参数后,再调用对应的函数去回答用户的问题。接着创建一个agent,该智能体主要用来与用户的沟通,获取用户的信息,判断用户的类型,然后调用tool去调用mbtiChain来回答用户的问题。所以,类似于 RAG 的思路,我们把标准的算卦流程和真实的八卦信息,由我们代码生成,并在后续 ch

无论是reAct还是openAI tools,提供给agents的tool都影响着agents的应用范围和效果。自定义tool: 需要的参数是工具的名称,描述和真实调用的函数,这里名称和描述将影响llm何时调用,具有一定的语义。在函数的实现上,不要抛出错误,而是返回错误信息的字符串。llm可以据此决定下一步行动。DynamicTool,只支持单一的字符串作为函数输入。因为向 reAct 框架,并不

前面的只是将历史记录完整的传递到LLM中,我们可以对LLM的历史记录进行更多操作,例如只传递最近的K条历史记录等还可以实现自动对当前聊天记录进行总结,让llm根据总结的信息回复用户的chain。首先实现一个总结的chainsummary,上一次总结的信息new_lines,用户和 llm 新的回复这个chain比较基础,传入两个变量prompt,然后将prompt传递给chat model,最后传

跟llm交互也是类似,在 prompt 中使用合适的关键词,能让 llm “召回” 到跟你提问最相关的资。上述我们的k设置了2,因为原文中茴香豆可能就出现了两次,所以是合理的,但是如果是其他问题,比如孔乙己平常在做什么,设置2就不满足了,所以我们需要定义另一种返回参考文档数量的方式,而不是暴力的定义数量。因为原始输入茴香豆是做什么用的,比较有歧义,对用户来说,他可能想了解的答案就是“茴香豆是下酒用

回过头看这个图基础智能体:其实就是跟大模型进行一些简单交互的Agent;多智能体:把和大模型交互的多个步骤,整合到一起,形成一个完整的智能体,中间是以图的结构,有一个完整的业务流程。复杂智能体:就是把任务的调度过程,交由智能体自己判断(智能体判断调用哪些工具/智能体)以前0.x版本,LangChain最为经典的LCEL链式编程依然支持,不过从官网的文档中删除了。看一下chain的democonst
封装一个antd的Form表单效果:只需传入配置文件定义配置类型整体:import React, { memo, useEffect, useRef } from "react";import { Form, Input, Button, Checkbox, Select, FormInstance } from "antd";import { Props } from "./type";impo
nexttick官方的解释就是:将回调推迟到下一个DOM更新周期之后执行,在更改了一些数据后等待dom更新后立即使用。比如有个需求,点击按钮后修改h2的message, 在修改h2后要获取其高度。一般有三种做法:1 点击按钮后立即获取到h2的高度(X)2 在updated获取 (其他数据更改也会影响)3 在nexttick中获取。nextTick只有在这个方法里面用才有效。别的state更新的时候

Tree shaking树摇晃,比如一颗树上的果子已经成熟了,那么他就不需要在树上了,摇晃着下来,树也会变得简洁。代码的话,比如一些代码如函数,定义后但是没有用到,那么这个代码就不会被打包。Tree shaking,计算机表示消除dead-code。用于消除未调用的代码,因为纯函数无副作用,所以可以放心消除,这也是为什么要尽量使用纯函数进行编程。Js中的Tree shaking主要是源自rollu







