- 博客(115)
- 收藏
- 关注
原创 【橘子大模型】基于OpenAi做一个小编
我们之前实现了基于python来抓取页面的信息,然后让大模型llm为我们生成一个简介。我们这次再进一步,我们抓取到网址上的标题,正文,有用链接等信息,来为这个网址的公司生成一个宣传文案。
2025-05-23 12:03:20
163
原创 【橘子大模型】OpenAi启动
之前我们用langchain来操作本地部署的模型做了一些工作。我们今天就操作一下openai的接口,全面了解一下具体的运作方式。
2025-05-20 12:10:20
278
原创 【橘子大模型】基于Rag构建Agent简版
如我上文所说,我们其实已经具备了各种langchain的操作知识,那么现在我们整合一下这些知识,我们来基于rag和agent来构建我们的应用。那么为什么要这么做呢,或者说rag和agent分别起到什么作用,在我们整合之后。我们已经知道了agent可以为我们去调用一堆tool,不管是自己实现的tool还是langchain内置的。那么如果这些tool获取的知识不够呢或者比较本地化的知识网上没有呢,无法从外部获取呢。
2025-04-23 18:08:47
329
原创 【橘子大模型】关于agent
我们此时其实已经完成了简单agent的制作,我们同时看到了langchain的强大,还有很多的功能等待我们学习。接下来我们就来整合所有的知识,来完成一个rag+agent系统。
2025-04-23 10:34:50
1003
原创 【橘子大模型】Tools/Function call
我们可以参考这里来实现。而且我们看到他支持三种方式来创建tools。具体的内容可以去阅读文档,我们这里先使用第一种来实现一下。我们到此就让大模型联网检索了,其实还能进一步调用tool来完成更多的能力。
2025-04-21 18:48:26
1183
1
原创 【橘子大模型】再探rag知识库的构建
我们上文简单实现了一下如何加载文本,如何切分文本,如何向量化,并且简单测试了一下检索。这里我们来实现如何基于我们构建好的向量知识库来进行大模型的chat功能。
2025-04-21 12:12:13
920
原创 【橘子大模型】使用streamlit来构建自己的聊天机器人(下)
我们之前完成了一个简易的聊天机器人,但是还留下了一些问题没有解决,比如如何开启新的会话。如何切换session_id,如何把对话做成流式的输出。这些我们就会在今天来完成。
2025-04-07 14:02:19
272
原创 【橘子大模型】使用streamlit来构建自己的聊天机器人(上)
我们之前已经掌握了很多关于和LLM交互的操作了,现在我们需要在这些操作上面构建自己的机器人,进而在客户端操作服务。我们需要使用的工具是你就把他理解为python的uniapp吧。
2025-04-07 09:30:00
785
原创 【橘子大模型】关于记忆上下文Message History
我们在使用各种大模型产品的时候,我们作为用户其实能做的不多。只是构建一个合理的输入这样就没了。更多的是交给大模型端来处理,那么我们这个系列其实是针对大模型之上,用户之下构建的定位。我们需要在这里做更多的东西来让大模型和用户之间交流的更加顺畅。其中有一个非常重要的点就是上下文的记忆。如果我们没有上下文记忆,那我们使用大模型就和传统搜索引擎没有任何区别,永远局限于当前交流,这种无疑问是不合理的。所以我们需要构建用户交流的上下文,交给大模型然后使得他拥有记忆能力。
2025-04-06 13:57:07
1334
原创 【橘子大模型】Lambda Runnable的操作
我们串行执行了两个chain,把第一个输出传给第二个作为输入,得到结果。但是这里有一点不太好,就是我第一个输出有时候可能很长,有时候可能很短。有时候token的长度不同选择不同的模型可能会更好。所以我们需要根据第一个的输出长度来判断下一个处理的模型是啥这个就有必要实现。这个需求的实现我们可以通过。
2025-04-05 09:16:48
447
原创 【橘子大模型】Runnable和Chain以及串行和并行
前面我们实现了一些关于如何和大模型进行交互的操作。那么我们此时来回顾一下我们当前进行的结构。我们已经很清楚这些操作的具体含义了,所以我这里就不在多介绍了。我们来看其中的几个点1、用户那边就是客户,没啥说的。2、langchain,这个是中间的框架。3、template,关键就在这里,我们大部分业务编码其实都在这里到目前为止。我们使用各种template来处理一些业务。我们构建起来一个模板之后,关键的一步就是执行invoke操作,包括llm也是执行invoke操作。
2025-04-04 15:17:02
1060
原创 【橘子大模型】关于PromptTemplate
在大模型应用中有一个概念叫做Prompt,我们来看一下百度百科对Prompt的定义。prompt中文为“提示词”。在AI大模型中,Prompt的作用主要是给AI模型提示输入信息的上下文和输入模型的参数信息。所以我们可以知道Prompt其实就是你问大模型的输入语言,也就是我们作为用户和大模型交互的输入。
2025-04-01 14:27:32
839
原创 【橘子大模型】使用langsmith来监控你的大模型
我们在上一篇文章中提到了我们可以使用langsmith来监控我们自己的模型。那么我们本文就来操作一把。
2025-03-31 19:06:21
309
原创 【橘子大模型】使用LangChain和LLM交互
上文中我们完成了ollama的安装和启动,并且测试了几个模型的效果,不管好坏来说。总算是跑起来了,接下来我们要使用langchian来进行一些开发。在开发之前我们需要做一个环境的准备,这个环境指的是python环境。
2025-03-31 10:42:56
884
原创 【橘子大模型】ollama启动
我们来搭建一个基于langchain的本地LLM,并且实现一个rag的检索增强器。原谅我就是这么单刀直入,没有废话。至于那些工具我就不多介绍了,网上说了很多了,我们直接进入操作。
2025-03-30 23:48:40
948
原创 【橘子网络】关于网络分层以及协议的全局讲解
主机的定义比较广泛,所有的接收流量或者发送流量的设备都可以被称之为主机。可以是电脑,手机,服务器。在当今云服务大行其道的局面下,各种云设备也可以被称之为主机。基于这个概念定义,我们可以进一步把主机的概念扩大,只要接送流量,你的家用电器,你的智能电视,你的智能手表,你的冰箱,你的智能电灯,都可以在这个定义之下被称之为主机。这些设备都在接收和发送网络流量,基于此我们可以看到这个概念的全面。并且很重要的一点就是你的网络流量的发送和接收,在如何于互联网通信的时候都遵循着相同的规则。这个规则我们会在后面详细解释。客户
2025-03-23 23:17:40
767
原创 【橘子websocket】如何基于vertx来构建websocket聊天室(上)
websocket的概念我们就不说了,网上已经说烂了,具体更加权威的内容可以去看。我们这里只来操作一下如何在实际开发中构建websocket服务。如果是springboot技术栈的话,其实很简单,就是几个注解的问题。不得不说springboot真的很方便。可以参考springboot的官方文档。我们这里不用springboot,我们来使用vertx来构建。至于什么是vertx可以参考vertx的官网。简单来说就是他是基于netty构建的一个响应式的包,并且在这个基础上开发出了一套相对完整的生态。
2025-03-18 10:39:11
497
原创 【橘子golang】从golang来谈闭包
捕获变量:闭包捕获了其创建时的变量(如 count),即使这些变量在其原始作用域中已经不可访问,就像我们初始化count的函数addCounter已经结束了,但是他还是被闭包捕获到了。独立状态:每个闭包实例都有自己的独立状态。add1 和 add2 是两个独立的闭包,它们各自维护自己的 count 变量。延迟求值:闭包在被调用时才计算其捕获的变量的值,而不是在创建时。函数式编程的特点大多如此。我们在java中使用lambda作为参数的时候也是如此。
2025-03-06 17:12:55
682
原创 【橘子python】在vscode中配置py3
这个故事来源于一个奸商,我在某购物平台买了一个pyCharm的那啥码,承诺永不过期,我刚用了不到两个月就拉了。然后再去找商家,发现已经注销跑路了。属实是可恶。那没办法了,那就用vscode吧,该说不说vscode是真神啊。万能就完事了。现在我写go也用vscode,因为goland也废了。
2025-03-05 13:40:40
580
原创 【橘子大模型】使用text2vec向量化文本(上)
这是对于学习ai的一次尝试,使用来把数据向量化之后接入向量数据库(我用的是ElasticSearch)。进而形成向量库实现向量搜索。从来来使用rag功能。当然本文侧重于如何使用该库进行向量化。
2025-02-28 14:09:28
854
原创 【橘子ES】Metric aggregations指标聚合
上文我们说到了聚合的三类聚合,其中包括指标聚合。Metric aggregations:指标聚合是根据字段值计算量度(如总和或平均值)的量度聚合。此系列中的聚合基于以某种方式从正在聚合的文档中提取的值来计算度量。这些值通常从文档的字段中提取(使用字段数据),但也可以使用脚本生成。数值指标聚合是一种特殊类型的指标聚合,用于输出数值。一些聚合输出单个数值指标(例如 avg),称为单值数值指标聚合,其他聚合生成多个指标(例如统计数据),称为多值数值指标聚合。
2025-02-11 13:38:25
977
原创 【橘子ES】Aggregations 聚合准备
基本上我们可以看出来,他是一种聚合分析,类似于做报表那样的一个功能。既然是报表分析的话那就离不开一些常见的概念,什么平均值,最大值,什么按照什么分组之后统计每个组里面的数据量这样的功能。在es中支持了三种聚合来实现这些功能。聚合区别于检索,检索是使用一系列条件把文档从es中搜索回来。但是聚合则是在搜索回来的文档的基础上进一步进行处理。简单来说聚合就是将数据汇总为指标、统计数据或其他分析。此时我们就构建好我们的数据了,后面我们再根据需要做修改等等操作。好了,此时我们就准备好了,下面我们来进行操作。
2025-02-11 12:33:40
405
原创 【橘子Kibana】Kibana的分析能力Analytics之Canvas画布
实际上这个其实不常用,因为当我们已经完成了视图的学习之后,这个画布的操作其实可以在视图那里完成,这个功能有点冗余。而且它需要你有es sql的基础知识。但是我们还是来看一下。首先我们来到kibana的界面来查看画布模块。我们看到在我们内置的三类数据之后,kibana为我们创建了三个默认的画布。我们来查看电商数据的那个画布,你能看到他其实还是一个统计展示的功能,我们完全可以以图表的方式使用视图来展示,只不过这个可能更直观,给那些不懂统计图的人看更有吸引力。
2025-01-26 20:38:58
382
原创 【橘子Kibana】Kibana的分析能力Analytics之Map地图
Maps:这里指的就是地图,你可以通过导入es对应的地理信息来支持geo方面的业务,而且基于这些数据我们可以在kibana上绘制关于地图,地理等信息的图。那你可能会问,有啥用。1、分析热点,我们可以用于分析哪些位置的数据分布比较集中进而采取对应的行为。2、事后恢复,当你的哪个位置的机房,服务器被摧毁(雷电),此时事后你可以分析这个区域的人群分布,进而针对性用户去做补偿。3、地图业务,你可以做一些地图业务,比如送外卖等等吧。
2025-01-25 21:02:58
463
原创 【橘子Kibana】Kibana的分析能力Analytics可视化分析
我不多逼逼,就说一句,可视化就是图表,kibana可以帮你绘制不同的图表,折线图,饼状图,柱状图等等来帮助你分析你的数据,这些图表非常的漂亮。我们可以来看看。之所以支持多种图表就是因为不同类型的数据可能不同的展示方式会更加直观。我们的可视化分析都是建立在kibana的面板功能(dashboards)上的,所以我们可以先进去面板。我们可以在这里创建各种各样的面板来展示我们的数据,下面我们先来创建第一个面板。
2025-01-24 13:47:53
854
原创 【橘子Kibana】Kibana的分析能力Analytics简易分析
我们经常会用es来实现一些关于检索,关于分析的业务。但是es本身并没有UI,我们只能通过调用api来完成一些能力。而kibana就是他的一个外置UI,你完全可以这么理解。当我们进入kibana的主页的时候你可以看到这样的布局。他展示了四大模块,分别是:1、Enterprise Search 企业级搜索,这个不难理解,他本身就是和es密切配合的,当然可以做搜索。2、Observability 可观测性,kibana可以用来监控应用的性能指标等一系列能力,因为他可以和APM整合使用。
2025-01-23 14:05:41
1203
原创 【橘子ES】使用docker搭建ELK环境
我们在搭建ELK环境的时候,一般有三种选择。1、本地安装,你可以到官网把安装包下载下来然后解压,修改配置文件,然后启动,这样比较麻烦,比较考验操作。那有的玩家就要问了,这种操作太吃手感了,有没有比较容易上手的玩法。有的有的,这样的玩法还有两种。2、容器启动,这就很简单了,拉取镜像,启动容器,都是一键操作的。3、Elastic cloud,es的官网提供了云服务,你可以注册账号上去直接用,但是免费时间只有14天,后面就得花钱了。当然你可以再找个新账号。这种是最方便的,但是有时间限制。
2025-01-23 10:52:56
2022
原创 【橘子微服务】spring cloud function的编程模型
虽然前面的示例展示了如何以编程方式在 FunctionCatalog 中查找函数,但在 Spring Cloud Function 被另一个框架(例如 Spring Cloud Stream)用作编程模型的典型集成情况下,您可以通过 spring.cloud.function.definition 属性声明要使用的函数,后面我们整合SCS会看到。了解在 FunctionCatalog 中发现函数时,了解一些默认行为非常重要。
2024-12-20 17:02:16
1060
翻译 【橘子微服务】是时候丢掉2PC模式了
2PC 有很多变体,但基本协议的工作原理如下:背景假设:事务所需的工作已经被划分到存储该事务访问的数据的所有分片/分区中。我们将在每个分片上执行的工作称为由该分片的 “worker” 执行。每个 worker 都能够彼此独立地开始处理其对给定事务的职责。2PC 协议在事务处理结束时开始,此时事务已准备好“提交”。它由单个协调器机器(可能是该事务中涉及的 worker 之一)启动(译者注:他的意思是这个协调者可以是独立于各个服务之外的,也可以是其中的某个服务)。2PC 协议的基本流程如下图所示。
2024-12-17 15:07:27
48
翻译 【橘子微服务】分布式事务saga模式初探
一个耗时较长的长事务会在相对较长的时间内占用数据库资源,这种行为明显的阻碍了其他客户端短事务的执行(译者:因为数据库的资源锁之类的机制)。为了缓解这些问题, 我们提出一个叫做saga的概念。它是由多个有序的事务组成、并且与其他事务可以交错的一个长时间事务(LLT)。(译者:把一个大事务拆分成为多个独立的小事务,每个小事务拥有提交和回滚的能力,并且这个大事务的这些小事务执行期间数据库还能执行其他的大事务的小事务或者其他事务,提高了并发执行能力以及划分了粒度。
2024-12-17 11:06:13
195
原创 【橘子容器】如何构建一个docker镜像
至此我们就介绍了常用的几种构建模式,我们看到其实各有利弊吧。看你喜欢哪一种了,只是后面两种不需要你掌握太多docker知识,更加专注于业务开发。
2024-12-13 18:50:00
1019
原创 【橘子ES】熔断器Circuit breaker
而父熔断器没有被放到这个map中,他是被保存在了这个变量中,之所以加volatile是因为可能多个并发用api在修改他的动态配置。好了,我们继续往下走。我们现在得到一点就是。
2024-12-11 11:46:36
1571
原创 【橘子ES】分词器的概念
我们已经知道了分词器的三个组成,其实es中是支持你自己组合这三个部分,进而形成一个自定义的分词器。我们来编一个需求,我们从源端过来的数据,可能长这样,I' am sohappy!我很开心,并且你给了我一个礼物,所以你能说一句去你的java吗。这就是本句话的意思,1、我们看到有很多html标签,我们要去掉。(char_filter用html_strip)2、但是html标签我们要保留p标签,因为后面要分段落。
2024-12-09 15:57:31
1083
原创 Switch表达式的发展(一)
我们前面对于模式匹配做了一些描述。现有 switch 语句的几个不规则性 (长期以来一直让用户感到恼火) 成为障碍。其中包括 switch 块的默认控制流行为 (落入) 、switch 块的默认范围 (块被视为一个单一范围) 以及该 switch 仅作为语句工作,即使将多路条件表示为表达式通常更自然。听起来概念还是很晦涩的。Java 的 switch 语句的当前设计紧跟 C 和 C++ 等语言,并默认支持直通语义。
2024-12-03 00:48:15
927
原创 Loom篇之java虚拟线程那些事儿
将虚拟线程引入 Java 平台。虚拟线程是轻量级线程,可显著减少编写、维护和观察高吞吐量并发应用程序的工作量。这是一个预览版 API。虚拟线程现在始终支持线程局部变量ThreadLocal,用户以前如何使用ThreadLocal,,那么在虚拟线程中依然保持原来的使用ThreadLocal。现在不再可能像在预览版中那样创建不能具有线程局部变量的虚拟线程。保证对线程局部变量的支持可确保更多现有库可以原封不动地与虚拟线程一起使用,并有助于将面向任务的代码迁移到使用虚拟线程。
2024-11-24 21:32:33
965
1
翻译 Loom开篇:Java 虚拟机的协程和延续
Project Loom 的使命是更轻松地编写、调试、分析和维护满足当今要求的并发应用程序。线程从 Java 的第一天开始就是一种自然而方便的并发结构(抛开线程之间通信的单独问题),因为它们当前作为操作系统内核线程的实现不足以满足现代需求,所以它正在被一些你不太容易理解的抽象模型所取代,并且浪费了在云中特别有价值的计算资源。(译者:指的是现有的线程模型是和操作系统线程一对一绑定的,会阻塞运行,你需要自己去构建响应式的程序来获取高的性能,比如webflux他就很难理解。
2024-11-15 18:55:33
1063
原创 instanceof 的模式匹配(二)
在经过了JEP305(jdk14)和JEP375(jdk15)的两轮预览之后,模式匹配终于迎来了他的交付日期,在2022年发布的JDK16中,伴随着JEP 394的发布,预览结束了,我们来看一下这个特性的结束点到底说了什么。在这次预览之中,我们看到几个例子,教你如何合理的使用模式匹配。
2024-11-15 12:38:09
862
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人