自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LangChain入门学习笔记(七)—— 使用检索提高生成内容质量

大模型训练使用的数据是开放的、广泛的,因此它显得更加的通用。然而在有些应用场景下,用户需要使用自己的数据使得大模型生成的内容更加贴切,也有时候用户的数据是敏感的,无法提供出来给大模型进行通用性的训练。RAG技术就是一种解决这种问题的方法。关于RAG的简单介绍,可以看笔者的。上面的每一部分都包含LangChain实现的或者第三方提供的类,可以根据开发者的业务需要来挑选合适的实现。由于类别很多,限于篇幅不一一介绍,大家可以先通过。的目录确定自己需要的工具。

2024-06-28 23:16:18 697

原创 LangChain入门学习笔记(六)—— Model I/O之Output Parsers

如果觉得LangChain 提供的解析器武德不够充沛,可以自己动手打造自己专属的“武器”。使用RunnableGenerator,这种方法简洁明了,推荐使用。从解析器基类继承编写新的类,相对比较复杂。RunnableLambda/RunnableGenerator自定义解析使用这个方法,我们定义自己的处理方法,接收某个输入,然后将其做对应转换后返回。以RunnableLambda为例如下:# 定义自己的解析方法# 传入AIMessage类型的参数,这是Chat Model的输出。

2024-06-21 18:58:07 934

原创 LangChain入门学习笔记(五)—— Model I/O之Chat Models

generate:用于根据输入的提示语生成结果。_llm_type:返回属性字符串,用来唯一标志模型类型名称。_agenerate:_generate的异步版本。_stream / _astream:流式传输的同步/异步版本。_identifying_params:用于追踪目的的模型参数属性值。

2024-06-19 21:40:10 1682

原创 LangChain入门学习笔记(四)—— Model I/O之LLMs

当我们需要封装自己的LLM类时,或者将LangChain支持的LLM进行其他不同的行为封装,这时候我们可以自定义LLM,以便使用自己的LLM的同时享受LangChain框架带来的便利。_llm_type: 返回属性字符串,可以用在记录日志。_call: 供invoke方法使用,底层大模型的封装。接受的参数有:prompt:用于生成内容的提示。stop:生成时的停用词。模型的输出在首次出现停用子字符串时被截断,如果不支持停用词,建议抛出异常NotImplementedError。

2024-06-18 16:51:06 1242

原创 LangChain入门学习笔记(三)—— Model I/O之Prompts

如果说LCEL是粘合剂,那么它需要粘合起来的要素就是各种组件。其中最核心的要素就是LangChain官方文档中定义的Model I/O:Prompts、Chat Models、LLMs和Output Parsers。这4个基本组件,可以处理基本的用户输入并通过大模型处理后按要求输出。这一章主要介绍第一个组件:Prompts,即用户输入的提示语。

2024-06-14 15:48:47 1134

原创 LangChain入门学习笔记(二)——LangChain表达式语言(LCEL)

可能我们需要对输入的prompt进行一些自定义的处理,这时候将自定义的处理逻辑函数作为传参对象传入RunnableLambda,不过要注意的是目前RunnableLambda只接受一个参数的函数定义。import os# 传入的Json字段值经过RunnableLambda处理# "a"通过itemgetter("foo")获得"hello",再经过length_function处理,结果是 "a": 5。

2024-06-12 12:09:46 1386

原创 LangChain入门学习笔记(一)——Hello World

LangChain是一个开源()的大语言模型应用开发框架,提供了一整套的工具、方法和接口去帮助程序员构建基于大语言模型的端到端应用。LangChain是长链(long chain)的意思,它的一个核心思想就是将应用的各阶段处理连成一条长串进行。

2024-06-12 12:09:27 1602

原创 搭建访问阿里云百炼大模型环境

最近这波大降价,还有限时免费,还不赶快试试在线大模型?下面整理访问百炼平台的千问模型方法。

2024-05-25 21:49:33 1271

原创 使用Giskard进行LLM的测试

Giskard是一个对AI模型进行测试的平台,可以执行功能验证、安全测试及合规扫描。工具主要分为两大块:Giskard Python库和一个server端Giskard Hub。使用Giskard的可以按照如下步骤进行测试:1. 加载数据集进行功能验证;2. 配置相关类型漏洞,进行扫描;3. 生成测试报告,进行问题确认;4. 针对问题生成测试用例;5. 引入第三方LLM进行比对验证。除了LLM,Giskard还支持NLP、视觉相关的模型测试,下面以LLM测试为例介绍Giskard的快速入门。

2024-05-12 07:58:21 555

原创 LoRA的原理简介

在文章开始前先澄清一个概念,需要区分形近的单词""(long range),这是一项通信技术。熟悉物联网行业的朋友相对会比较熟悉LoRa这项技术,因为有些设备比如电梯的控制就使用了这个技术进行本地数据和命令的传输。本文介绍的LoRA(最后两个字母大写),是Low-Rank Adaptation的缩写,Low-Rank来自于对权重矩阵的分解。LoRA技术通过将权重矩阵分解成低秩矩阵的乘积,降低了参数数目,进而达到减少硬件资源、加速微调进程的目的。

2024-05-09 20:25:38 11626

原创 初学者理解Transformer,本文is all you need

要问现在AI领域哪个概念最热,必然是openAI推出chatGPT之后引发的大模型。然而这项技术的起源,都来自一篇google公司员工的神作“”——本文标题也是一种致敬^_^,目前已有近12万的引用(还在增长)。在“”中介绍了一种新的神经网络架构,被命名为变形金刚(也可以叫变压器,只是不那么cool)的Transformer,并应用到语言翻译中取得了很好的效果。

2024-05-09 20:24:06 1021

原创 RAG原理及本地化实践

参考资料1中,Patrick Lewis等人提出了一个基于LLM的新架构,并命名为RAG。RAG不是一种新的深度学习网络模型,我更倾向于将它理解为一种基于LLM模型,并组合了其他技术的一种新型框架。RAG是Retrieval-AugmentedGeneration的首字母缩写,同时这三个单词也分别表示了这个技术处理的三个步骤,分别的意思是:Retrieval:数据的获取部分。根据用户输入的query数据,再从用户提供的资料中查找出跟query相关的内容。Augmented:数据增强部分。

2024-04-26 23:01:42 1684

原创 浅谈如何进行LLM应用的测试

传统软件应用的输出会遵循程序员编写的代码逻辑,对确定的输入能生成与之对应的确定输出。然而这个规律在基于LLM的应用中却不那么成立,当我们输入提示给到LLM应用时,它结合上下文提示语及概率参数设置,最终输出就并不是那么可预知的。而且从技术上看LLM应用的正常输出也未必就是准确或者合适的。对于这种非结构化、更多关注用户主观感受的产品,它们的质量如何度量呢?

2024-04-14 09:52:12 1078

原创 LLM应用安全开发实践

基于大语言模型LLM的产品已经越来越多地被个大公司应用到自己的业务当中,这固然带来了新的商业机会,但也给应用的安全工作带来了新的挑战。一方面,大语言模型技术被黑客应用到攻击的实践中,提升了他们的攻击效率;另一方面,LLM由于自己本身的特点,比如输入的提示和模型应用的数据是不可严格分开的,以及模型设计是不确定的,导致LLM具有它特定的风险挑战。LLM应用有它特有的安全漏洞,比如提示注入漏洞,恶意用户通过精心构造提示内容或者间接提供给LLM含有提示注入风险的内容让其处理,从而被攻击者利用产生非预期的结果。

2024-03-23 23:02:31 1349

原创 LLM应用的OWASP Top 10漏洞

随着语言大模型的热潮涌动,很多公司都将大模型AI技术应用到自己的产品中。相比于传统的Web应用,基于LLM的应用由于模型结构的复杂性,以及输出结果的不确定性,给大模型应用引入了以前网络应用不同的风险敞口。

2024-03-19 20:47:01 2131 1

原创 本地运行Gemma的pytorch集成

Gemma是Google在2024年2月21日发布的一款轻量的开源大模型,采用了和Google Gemini模型一样的技术。有猜测Google在毫无预告的情况下急忙发布Gemma是对Meta的Llama3的截胡,但不管怎么说作为名厂名牌的大模型,自然要上手尝试尝试。这次发布的Gemma有2B参数和7B参数两个版本,两个版本又分别提供了预训练(Pretrained)和指令调试(Instruction tuned)两个版本。

2024-03-01 16:30:52 1589 3

原创 深入学习jvm-sandbox(安装&快速上手)

一、安装jvm-sandbox的安装非常简单,简言之就是执行下载文件夹里的install-local.sh,下载地址请访问这里。1. 下载下载安装包的zip文件解压后目录结构如下:这里面bin目录下的sandbox.sh就是jvm-sandbox交互的命令行脚本,但是没有安装前不能直接使用,因为还有一些变量没有定义。example、module、provider目录下的各种ja...

2019-12-17 18:41:37 4696

原创 深入学习jvm-sandbox(前言)

jvm-sandbox,用官方的说法是一种JVM的非侵入式运行期AOP解决方案,一种JVM沙箱容器技术。jvm-sandbox通过动态修改应用字节码在运行期改变应用的行为,配合其它一些工具可以构建出功能强大的测试工具平台。笔者通过一系列文章对jvm-sandbox做一番介绍,希望共同讨论、共同学习、共同进步。jvm-sandbox是阿里巴巴开源的一款非侵入式运行期AOP解决方案,就像它的命名暗...

2019-10-29 19:37:51 2133 3

原创 一次org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)的处理

一次代码迁移项目中,验证定时任务的时候,后台报:org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)。从网上搜索,原来是xml的namespace路径和java包不一致造成。看了下日志,原来是自己复制粘贴的时候多复制了一行,误把原来应用的namespace拷贝了进来。这类问...

2019-03-08 10:29:53 536

原创 随记——lombok插件

导入产品的工程到idea,发现一堆的方法未定义的报错。虽然 执行mvn clean install -U -Dskiptests错误依然存在。原来是项目中使用了lombok,在idea中安装lombok插件后重启,错误全部消失。 lombok介绍可看:https://blog.csdn.net/motui/article/details/79012846...

2018-12-27 15:08:05 171

原创 应聘BAT软件测试工程师你可能需要这样准备

又到了金三银四的时节,那颗躁动的心又开始蠢蠢欲动,是否有考虑在拿完年终奖后另觅高枝呢?如果刚好你有这个打算,那么这篇文章就是为你准备的呢,让我们相约BAT吧。人们常说:人挪活,树挪死常言道,此处不留爷,自有留爷处,处处不留爷,爷干个体户。在旧的岗位上,也许遇到或这或那的不满意:待遇低了、老板傻逼、机会有限等等,那么与其在此空耗,确实不如另寻一个好的卖身处,从而走向人生巅峰。也许你有一千个理由要离开...

2018-03-30 01:20:51 1790

原创 软件测试工程师的四重天

笔者入行IT从事软件测试有了不少年头,从经历过的同事、业务伙伴来看一名合格的软件测试工程师应该具备怎样的技能,TA的岗位画像应该是怎样,在这里和大家一块探讨。一重天:对异常的敏锐观察力和技术好奇心一开始抛出这个观点,可能会打消很多人继续阅读下去的兴趣,因为这特么也太虚无缥缈的一个要求了。确实也是,这里甚至无法给出怎样叫敏锐、怎样叫好奇的定量标准。然而,作为一名软件测试工程师,这个要求却是一个基本的...

2018-03-28 01:22:09 407

原创 搭建spring源代码环境

1. 前置条件: a)安装jdk,网上资料很多,直接搜索自己平台对应的jdk版本进行安装,配置环境变量。 b)安装git客户端工具(linux发布一般都有集成,可以通过在终端输入命令git --version检查是否安装)。 c)安装gradle构建工具,具体安装方法可以参看https://my.oschina.net/u/2273594/blog/630812。

2017-07-09 01:27:34 694

翻译 1.2.1.2 测试运行调试器

使用嵌入模式的调试器运行一个名为some.test的测试应用,你可以这样:运行命令libmysqld/examples/test_run --gdb some.test。这生成一个包含mysqltest所需参数的文件: libmysqld/examples/test-gdbinit。复制 test-gdbinit文件 (叫做,比如, some-gdbinit

2017-05-30 22:57:18 272

转载 1.2.1.2 Running a Test with the Debugger

转载自:https://dev.mysql.com/doc/internals/en/guided-tour-major-directories-test.htmlTo run a test named some.test with the debugger in embedded mode you could do this:Run libmysqld/exa

2017-05-30 22:55:56 256

翻译 1.2.1.1 GNU调试器

一旦你让某些应用运行,你就可以在其上面使用调试器。我们推荐GNU的调试器。http://www.gnu.org/software/gdb/documentation/许多开发者使用图形化调试器工具DDD——数据展示调试器(Data Display Debugger)http://www.gnu.org/software/ddd/manual/这些都是免费且常见的,可

2017-05-30 22:27:40 346

转载 1.2.1.1 GNU Debugger

转载自:https://dev.mysql.com/doc/internals/en/gnu-debugger.htmlOnce you've got something that runs, you can put a debugger on it. We recommend use of the GNU debuggerhttp://www.gnu.org/software/g

2017-05-30 22:26:39 364

翻译 1.2.1 重要目录:BUILD

第一个我们要深入发掘重要目录是BUILD。事实上它内容甚少,却非常有用,因为你拿到源代码后首先要做的事情之一就是:编译和链接它。下面是我们可能用到的命令示例:shell> ./BUILD/compile-pentium-debug --prefix=$HOME/mysql-bin它调用一个 BUILD 目录中的批文件。执行完以后你就拥有了一个可执行的MySQL服务

2017-05-28 23:53:32 319

转载 1.2.1 Major Directories: BUILD

转载自:https://dev.mysql.com/doc/internals/en/guided-tour-majordir-build.htmlThe first major directory we'll look at is BUILD. It actually has very little in it, but it's useful, because one of

2017-05-28 23:52:17 189

翻译 1.2 主要目录

1. BUILD2. client3. Docs4. myisam5. mysys6 sql7. vio一种有条理的方法是先翻看最重要的一批目录,再第二步查看整个目录列表。所以,首先让我们看看你能从下面7个目录中发现什么:BUILD, client, Docs, myisam, mysys, sql, 和vio。

2017-05-28 23:44:49 198

转载 1.2 The Major Directories

转载自:https://dev.mysql.com/doc/internals/en/guided-tour-majordir.htmlBUILDclientDocsmyisammysyssqlvioThe orderly approach is to look first at the most important

2017-05-28 23:34:41 188

翻译 1.1 获取源代码树

这一节讲如何获取MySQL源代码树,它当前已经在GitHub上可以获得。MySQL正式加入GitHub是在2014年9月。关于MySQL搬迁至GitHub更多的信息,请参阅MySQL Release Engineering博客的申明:MySQL on GitHub。从GitHub上获取MySQL源代码树,请遵循下面步骤:1. 克隆MySQL Git仓库到你的机器。 如下

2017-05-26 23:44:23 540

转载 1.1 Getting the Source Tree

转载自:https://dev.mysql.com/doc/internals/en/getting-source-tree.htmlThis section describes how to obtain the MySQL source tree, which is currently available on GitHub.MySQL officially joined

2017-05-26 23:43:41 210

翻译 第一章:MySQL源代码导览

Chapter 1 A Guided Tour Of The MySQL Source Code这一节我们将从互联网上下载MySQL的最新拷贝。然后我们会看到一系列目录,并讲解为什么有这些目录。接下来我们会打开一些对MySQL运行非常重要的文件并对源码中特定行进行讲解。最后我们以一些文件格式的图片结束。

2017-05-25 23:27:51 257

转载 Chapter 1 A Guided Tour Of The MySQL Source Code

转载自:https://dev.mysql.com/doc/internals/en/guided-tour.htmlTable of Contents     1.1 Getting the Source Tree1.2 The Major Directories     1.3 The Flow1.4 The Open-Sourc

2017-05-25 23:26:38 268

翻译 MySQL Internals Manual翻译

摘要这是一本MySQL内幕手册。关于版权信息,请看版权通告。关于使用MySQL的帮助,请访问MySQL论坛或者MySQL邮件列表,在这里你能和其他MySQL用户讨论你的问题。关于更多的MySQL产品的文档,包括文档的翻译、可下载的不同格式的版本,包含HTML和PDF格式,请看MySQL文档库。

2017-05-25 23:18:08 1095

转载 MySQL Internals Manual

转载地址:https://dev.mysql.com/doc/internals/en/AbstractThis is the MySQL Internals Manual.For legal information, see the Legal Notice.For help with using MySQL, please visit eithe

2017-05-25 23:14:30 364

空空如也

空空如也

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

TA关注的人

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