自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 Ollama0.3.0 + llama3.1本地部署

2024年7月25号,Ollama发布0.3.0版本,该版本正式支持了Function Calling,我们测试下。​命令,安装最新的llama3.1版本模型,程序有4.7GB,需要下载一段时间。可以看到,模型已经成功识别了自定义的add工具,并返回了工具调用的Schema。安装完成后,电脑右下角会出现ollama程序图标,表示ollama正在运行。输入ollama,如果出现下图表示安装没问题,然后输入。打开jupyter notebook,输入代码进行测试。可以看到,刚才下载的本地模型已经成功运行了。

2024-07-31 22:54:51 881 2

原创 LangGraph实现可以查快递的聊天机器人

本文主要基于LangGraph官网中的QuickStart示例代码,通过Streamlit来实现一个支持工具调用的聊天机器人。通过这个实现,主要可以看下LangGraph实现的ChatBot和用LangChain的区别在哪里?有哪些优势?后续我会基于streamlit可视化聊天界面继续探究LangGraph的其他特性,比如CRAG、数据库查询助手等。用langgraph实现的聊天机器人,在工具调用上会比langchain更灵活,整体表现也更自然。

2024-07-28 20:28:50 900

原创 LangGraph概念全解

默认情况下,节点和边都是提前定义好的,并基于同一个共享State运行,但是有些场景下,无法提前确定边,甚至一个图内会出现State的不同版本。众所周知,LLM的输出不稳定,同样一个问题,大模型都可能采用不同的回复,甚至出现不同的理解,导致结果南辕北辙,如何通过框架设计,让大模型能够可控的输出是非常重要的一项框架能力。节点通常就是一个Python函数,这个函数通常接收两个参数,第一个位置参数是共享的state,第二个是一个config,比如用户id,线程id会在这里传入。所以在调用图形时,需要指定具体的。

2024-07-23 15:47:22 2906

原创 使用Streamlit实现一个支持记忆的RAG问答APP

用户的第二次提问是针对大模型的回复上下文场景下的,所以大模型第二次提问,需要根据整个对话内容重新理解提问,并且改写用户的提问,再通过检索器进行检索后,最终回答用户的第二次提问。使用Streamlit实现文件上传,我这里只实现了txt文件上传,其实这里可以在type参数里面设置多个文件类型,在后面的检索器方法里面针对每个类型进行处理即可。所以引入记忆带来的额外问题的核心就是,如果需要RAG程序要支持记忆,就需要额外加入模型理解对话上下文后改写问题,再次进行检索并回答的流程。大模型:机上3名机组成员全部死亡。

2024-07-13 09:11:05 1102 2

原创 如何实现LLM输出的Callback可视化

我这里使用的是通义千问的模型,为了不用每次都要输入,设置默认获取本地环境变量中的key,没找到再获取sidebar.text_input控件的值,都没获取到就不往下走了。当我们是用React大模型进行输出时,由于React这类推理的大模型它的输出不是一次性的,内部会有一个完整的推理过程。因为langchain迭代比较快,目前在网络上找到的、书里面的,甚至官方demo,这个回调的写法都过时了。可以看到,大模型的输出通过streamlit的callback显示了整个推理过程。

2024-07-11 09:09:24 349

原创 通过Stable Diffussion 实现AI智能扩图

通过Stable Diffussion 实现AI智能扩图

2024-07-05 12:53:01 469

原创 LCEL语法下支持Memory

由于当Chain使用Memory​模块时,就无法使用LCEL管道符,所以LangChain另外提供了一个工具类RunnableWithMessageHistory​,让Chain可以支持History能力。同时在调用Chain的时候,需要额外传入config​对象。要使用这个工具类,需要以如下方式创建Histroy对象,

2024-07-01 17:38:13 266

原创 基于ConversationChain实现带记忆的对话应用

【代码】基于ConversationChain实现带记忆的对话应用。

2024-06-30 20:22:11 261

原创 基于阿里通义千问实现ReAct

目前,国内大模型基本上都还不支持类似openai的自定义函数绑定,即:llm.bindtools方法,也就无法实现自定义ReAct Agent,如果要使用国内大模型,需要考虑自己实现。本文基于国内的阿里通义千问,实现了类似OpenAI 的ReAct Agent效果。以下是开启调试结果后,每次大模型的推理、行动输出。

2024-06-30 09:03:07 894

原创 大模型多工具动态选择

注意事项:大模型生成的工具入参arguments结构可能会不稳定,导致出错。需要通过提示词去强化。比如代码中,我强化了“"arguments"键对应的值应该是所选函数的输入,必须是dict格式”这句提示词,之后就稳定了。我们更需要一个能够根据用户提示词,自动选择对应工具的大模型,而不是在一个链里一次只能使用一个工具。这里用代码实现了,在langchian中如何从多个可选工具中,动态的使用工具。

2024-06-26 21:15:48 296

原创 基于聚合数据API实现出行顾问

【代码】基于聚合数据API实现出行顾问。

2024-06-26 06:37:26 246

原创 基于LCEL实现大模型编写SQL并查询数据库

【代码】基于LCEL实现大模型编写SQL并查询数据库。

2024-06-24 23:50:52 495

原创 基于LCEL实现自动编写并执行Python代码

【代码】基于LCEL实现自动编写并执行Python代码。

2024-06-24 21:36:39 195

原创 用create_stuff_documents_chain构建一个完整的知识问答模型

【代码】用create_stuff_documents_chain构建一个完整的知识问答模型。

2024-06-23 21:20:42 724

原创 嵌入模型(Embeddings)

嵌入技术是一种将高维的离散数据映射到低维连续向量空间的方法。这种映射保留了数据之间的语义关系,使得大模型能过够很容易的理解和处理这些数据。通过嵌入,我们可以把复杂的文本信息转换为计算机可以处理的向量形式。

2024-06-23 12:02:42 658

原创 LCEL语法管道操作符“|”实现原理

管道符号“|”的含义是“或者”,Python解析器在解析时a | b语句时,如果发现两个对象之间存在“|”符号,会先尝试让对象b调用a的__or__方法。所以a | b 等价于 a.__or__(b)。LangChain通过实现Runable类并重写__or__方法内容,来实现LCEL语法。以下用一段代码来实现原理。

2024-06-22 18:36:05 435 1

原创 LangChain记忆组件Memory用法

大多数大语言模型有对话界面,而对话中一个至关重要的功能就是引用之前在对话中介绍过的信息。通常一个对话系统应该能够直接访问一定窗口范围内的历史消息。而在更复杂的系统中,需要具备一个不断更新的世界模型,以便维护有关实体及其关系的信息。以下用一段代码来实现LangChain来实现一个对话系统,该对话系统实现了记忆能力。

2024-06-22 17:03:11 288

原创 LangChain输出解析器Output Parser用法

大语言模型输出的一般是文本格式,但是很多时候,我们可能需要大模型按照我们要求的格式进行格式化输出,比如输出XML、JSON、逗号分隔符的列表等,OutputParser可以帮助我们获取结构化的信息。

2024-06-22 17:02:26 323

原创 LangChain 链组件Chain用法

如果大模型只用来做聊天机器人场景是比较简单的,但是如果要让当前的大模型去完成一个复杂的任务,目前的大模型能力是无法达到的。LangChain提出了链(Chain)这个概念,即把所有的组件,包括大模型在内,串成一个链,通过这个链去完成比较复杂的任务。

2024-06-22 17:01:46 354

原创 主流大模型的对话模型ChatModel实现

聊天模型是大语言模型(LLM)的一种封装。聊天模型不再局限于提供一个“文本输入,文本输出”的API能力,而是提供一个以“聊天消息”作为输入和输出的接口。通过向聊天模型传递一个或多个消息,可以获取聊天完成的结果,响应也是一个消息。目前Langchain支持的消息类型有AIMessage、HumanMessage、SystemMessage和ChatMessage,其中ChatMessage可以接受一个Role参数,传递任意角色。

2024-06-22 17:00:55 1173

原创 LangChain模板Template组件用法

大语言模型以文本作为输入,这段文本被成为提示词(Prompt)。大部分时候,我们和大模型交互,是需要多次、重复的让大模型去完成类似的任务,所以提示词大部分时候是内容相似的、结构是一致的,只是少部分需要修改。那么这个时候,模板就非常有用。

2024-06-22 16:59:22 352

原创 大语言模型安装使用方式汇总

目前最好的大语言模型,但是国内用户用不了,即使通过一些其他办法申请到了key也很容易被封。个人学习不建议强行使用。当前国内有一些公司已经兼容了OPENAI SDK的调用方式,比如ChatGLM、百川等,可以作为OPENAI大模型国内的平替。是阿里云推出的语言模型,于2023年9月13日正式向公众开放。文心一言是百度全新一代知识增强大语言模型,文心大模型家族的新成员,能够与人对话互动、回答问题、协助创作,高效便捷地帮助人们获取信息、知识和灵感。

2024-06-22 16:58:06 719

原创 LangChain简介及安装说明

LangChain 是一个基于大型语言模型(LLM)开发应用程序的框架。​。

2024-06-22 16:56:37 1071

原创 AI大模型开发框架介绍

它可以通过查询、检索的方式外绝外部数据,并将其传递给大模型,从而让大模型得到更多的信息,LlamaIndex主要由三部分组成:数据连接、索引构建和查询接口,它的主要目标是提高LLM对特定领域问题的回答精度。用户只需要输入简单的指令即可定义任务的目标和步骤。LangChain使用以下6种模块提供标准化、可扩展的接口和外部集成,分别是模型IO模块(Model I/O)、检索模块(Retrieval)、链模块(Chain)、记忆模块(Memory)、代理模块(Agent)和回调模块(Callback)。

2024-06-22 16:53:40 723

原创 Python 目录递归查找,生成文件路径列表

import osdef search_file(path,file_path_list): files = os.listdir(path) for file in files: file_path = os.path.join(path,file) #如果是文件夹,递归调用 if os.path.isdir(file_pat...

2019-12-05 11:38:57 649

原创 Excel时间转换为Unix时间戳并格式化输出

stamp16 =round((floattime-25569)*1000000*86400)floattime= Excel单元格中的浮点型数值25569:unix时间戳起始日期从1970-1-1算起,excel的是从1900-1-1算起,两者相差70年,累计25569天86400:一天24小时换算成秒16位的时间戳前10位是年-月-日-时-分-秒,后面6位是微秒如果使用...

2019-12-05 10:35:59 1882

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除