首页 > 编程语言 >想快速进入人工智能领域的Java程序员?你准备好了吗?

想快速进入人工智能领域的Java程序员?你准备好了吗?

时间:2023-11-16 10:14:08浏览次数:44  
标签:插件 Java 好了吗 LLMs 数据库 程序员 问答 我们 向量

引言

今天我们来探讨一下作为Java程序员,如何迅速融入人工智能的领域。,当前有一些流行的LLMs选择,例如ChatGPT、科大讯飞的星火、通义千问和文心一言等。如果你还没有尝试过这些工具,那么现在也不失为一个很好的机会,赶快体验一下吧。这些工具不仅能够为你的Java编程工作提供更多的可能性,还能够为你带来全新的AI应用体验。无论是开发聊天机器人、语音识别系统还是智能问答平台,这些工具都能够为你提供强大的支持和便利。所以,不妨抓住这个机会,加入AI的行列,拓宽你的技术领域吧!

当然,我们作为程序员肯定不仅仅是简单地使用大型语言模型(LLMs),今天,我们就来看看如何才能让这些工具为我们服务,成为我们的初代“贾维斯”。让我们一起探索人工智能的无限可能!

AI初体验

话归正题,当人工智能技术越来越火的时候,我们第一反应都是会迫不及待地想要尝试并体验它的魅力,各种奇葩的魔法问答也就应运而生了。这些LLMs系统通过与人自然交互,能够回答用户的各种问题,有时候甚至会给出一些有趣的回答。如下图:

image

不过,我们也要明白,这些LLMs系统实际上也是基于大数据和机器学习算法构建的,它们并不具备真正的智能和理解能力。因此,在使用这些系统时,我们需要保持理性和客观,不要过于依赖它们,而是要明确它们的局限性,并结合自己的判断力进行思考和决策。

问答进化

虽然LLMs在回答问题时表现出了惊人的能力,但有时候它们也会出现错误的情况。有时候,它们可能会给出与我们问的问题不相符的答案,这可能是由于模型的训练数据不完善或者存在一些偏见和误导性的信息。于是乎,这时候网上又掀起来了一阵各个角色扮演的狂风,通过套壳AI应用来调侃和娱乐,一些个人和小公司也会利用这一现象来盈利,推出各种有趣的问答形式。这种问答形式的变化不仅给我们带来了乐趣,也展示了人工智能技术的灵活性和创造力,然后我们的问答模式先进了一下,变成了以下的问答形式:

image

这个时候就取决于谁的提示写得更好,写得好的人能够吸引更多的用户,而流量可以转化为收益。在这个阶段,博主也加入了进来,尝试使用套壳应用。因为GitHub上有大量的开源代码可供使用,只需要将其部署到本地就可以完成。这个过程非常简单。

问答插件开发

接下来,开发者们开始疯狂输出,例如开始开发GPT插件,国内也有很多语言模型开始使用插件。其中,联网功能插件最典型,因为大型模型无法保持最新的新闻和知识库,所以这个插件的出现非常热门。虽然热度很高。不过基本上的逻辑也很简单,如下图所示:

image

这个时候,开发者们通过插件的形式为LLMs增加了更多的功能和灵活性。这些插件可以使LLMs能够联网获取实时的新闻和知识,从而提供更准确和全面的答案。这些插件的开发为LLMs的应用场景提供了更多的可能性,也为开发者们创造了更多的机会。

知识库建立

剩下的形态开始变得丰富多样。如果你发现在询问LLMs之前可以提前收集很多有用的信息,那么你可以建立自己独立的“贾维斯”个人助理,只需要提前将信息存储起来,就像建立了自己的知识库一样。接下来的任务就是如何通过检索相似信息并提供给LLMs,让它根据我们提供的有效信息来回答问题。毕竟,训练一个LLMs是非常耗费时间和精力的,你觉得你有足够的时间和精力在业余时间来完成吗?还是利用已经训练好的LLMs好好使用吧,只要你提供足够详细的知识,LLMs的回答就会越好。LLMs的选择越好,你得到的结果也会越好。剩下的工作就类似于这样一种架构图:

image

当你看到这个架构图时,你会发现,现在重要的是谁能够更好地拓展思维。你得到的架构图越复杂,结果就越详细。让我来解释一下。首先,我们需要了解如何建立自己的知识库。在解释知识库之前,我们需要了解一下"embedding"这个概念。"embedding"是将语言、图片或其他任何东西转换为数字编码类型的向量的过程。如果你开发过推荐功能,你对此应该不陌生。

如果我们将你的喜好和浏览记录转化为可计算的数字向量,接下来我们需要一个向量数据库来存储这些计算好的向量。我们可以举一个向量数据库(比如Milvus)作为例子,当然你也可以选择其他向量数据库。向量数据库是专门用于存储向量数据的,同样具备增删改查四种基本操作。

通过将用户的喜好和浏览记录转化为可计算的向量,并利用向量数据库进行查询和推荐,你可以打造一个个性化的推荐系统。这个系统能够根据用户的兴趣和行为模式,找到与其相似的其他用户,并向他们推荐已购买的产品或感兴趣的知识数据片段。而我们的存储系统则应该专注于收集和储存与我们所处的行业或领域相关的独特信息,作为我们的知识数据库。

类似于我们查询最相似的记录,我们可以将向量数据库视为自己的浏览器搜索引擎,查询到的记录必定是我们想要的知识片段。我们将这个片段发送给LLMs,并附上我们的问题或想法。LLMs会根据你发送的知识片段进行回答,这样一个自己的“贾维斯”助理就诞生了。

总结

实际上,每个分支节点都可以继续进行细分,直到创建出一个完美的个人助理。现在,LLMs(Language Models)非常流行且数量众多。然而,对于一个上班的开发者而言,自行训练一个个性化的模型可能既费时又麻烦,并且并不一定能够得到理想的结果。事实上,很可能在未来的某个时间点,其他公司已经开发出了针对您所在领域的完美LLMs模型。根据我之前提到的模型架构,您只需要简单地替换一下LLMs的选择,就能够灵活地适应自己的需求,并且不受限制。

标签:插件,Java,好了吗,LLMs,数据库,程序员,问答,我们,向量
From: https://www.cnblogs.com/guoxiaoyu/p/17813942.html

相关文章

  • Java 多线程安全的使用小结
    在使用多线程进行编程的过程中,难免遇到共享资源读写问题,这是为了线程安全,一种思路就是使用锁来控制并发读写问题。在通过锁来实现并发安全中,常用的有以下几种:synchronized,对象锁ReentrantLock,重入锁ReentrantReadWriteLock,读写锁今天从使用的角度来看看这几种锁是如何使......
  • Java 线程池使用小结
    我们在使用多线程编程的时候,为何要用线程池呢?使用线程池的好处是什么呢?线程池有哪些使用场景?为何使用线程池?因为线程资源宝贵,不论创建新的线程还是销毁线程,都有相应的资源开销,比如在数据库连接方面,每个请求过来都是新建连接数据库的线程,请求少,资源开销总体不大,但也架不住请求一......
  • 35 岁实现财务自由,腾讯程序员手握2300万提前退休?
    每天行色匆匆,毫无生气的往返于公司与家的两点一线;承受着来自公司、部门的内卷,领导的PUA;相信,现下很多年轻人都会感慨什么时候才能实现财务自由,提前过上“退休生活”那么财务自由的标准是什么?最近看到一个有意思的帖子:一腾讯员工说自己35岁,存够2300万,懒得打工,提前养老退休了!引发......
  • 最新版本的AndroidStudio新建Android项目时设置语言为java
    我们之前用AndroidStudio新建项目时是这样的 选择EmptyActivity,下一步 怎么没了语言选项了,java呢?改为EmptyViewsActivity这个就好了 ......
  • Java中的Comparator自定义排序
    需求:将指定数据中的数据,按照字母中包含的数字大小进行排序测试代码:publicstaticvoidmain(String[]args){List<String>list=newArrayList<>();list.add("QW34");list.add("QW21");list.add("QW12");list.add("QS34"......
  • setTimeout 是浏览器环境提供的,JS 标准没有规定。不是JavaScript的全局函数,是浏览器(宿
    下列哪些函数是JavaScript的全局函数?AencodeURIBparseFloatCsetTimeoutDeval正确答案:ABD答案:A、B、D个人记忆方法:6(编码相关)+2(数据处理)+4(数字相关)+1(特殊)编码相关:escape()、unescape()、encodeURI()、decodeURI()、encodeURIComponent()、decodeURIComponent......
  • onclick="javascript:void(0)"就是行内javascript
    给网页添加JavaScript的方式有A使用script标签,将javascript代码写到之间B添加外部javascript文件C使用行内javascriptD使用@import引入javascript文件正确答案:ABCA正确。使用script标签,将javascript代码写到之间,例子:<scriptype="text/javascript">document.write("Hel......
  • java 继承中的访问特点已经方法的重构
    packagenet.elaina.a01oopextensdemo2;publicclassTest{publicstaticvoidmain(String[]args){//利用空参构造创建子类对象Ziz1=newZi();z1.ziShow();}}classFu{Stringname="Fu";}classZiextendsFu{......
  • Java方法01:什么是方法?
    一、何谓方法?1.System->类 out->对象println->方法2.方法的命名规则:首字母小写,后面是驼峰的命名规则publicclassDemo01{//main方法publicstaticvoidmain(String[]args){intsum=add(1,2);System.out.println(sum);}//加......
  • JAVA大小写敏感问题
    最近从Golang转JAVA,据我了解JAVA是大小写敏感的,于是我写了如下的测试代码`classTable{}classtable{}publicclassMyMultiClass{publicstaticvoidmain(String[]args){TableT=newTable();tablet=newtable();}}`结果出现了下面的错误`Exceptionin......