论坛

Please or 注册 to create posts and topics.

两个非常好用的 AI 工具,用起来绝对可以提升工作和学习效率!

现在市面上各种 AI 工具层出不穷,作为技术人员肯定要不断地尝试各种新鲜工具,今天给大家分享两个我觉得不错的 AI 工具,用好了可以帮我们很大程度上提高工作和学习效率。

AI Commits

AI Commits 是一款 IDEA 插件,用来自动生成 git 提交信息的,日常我们在开发过程中,每次修改了代码再提交之前,都要写一些 git commit 信息,一个好的 commit 信息可以很好地帮助别人理解我们的代码变更,而且也方便后期回顾。

IDEA 的插件安装很简单,直接在插件市场上,搜索 AI Commit,然后点击安装即可,安装完成过后,我们需要对插件进行配置一下。

20240422-23

打开设置找到 Tools -> AI Commit,在右侧的面板中填上 OpenAI host,获取有代理地址填代理地址也行,下面再配置上 OpenAI token 也就是对应的 API Key,然后在选择一个模型,目前只有 gpt-3.5-turbogpt-4 两个模型可以选择。

20240422-24

在下方的 Prompt 中可以设置语言,也有自带的一些 Prompt,可以根据自己的情况来设置,比如我这边就自定义了一个中文的 Prompt 用来生成 git commit 信息,完整的 Prompt 如下,需要的可以自取,也可以根据自己的需求进行调整。

使用 {locale} 语言写一个简明、清晰、信息丰富的提交信息,提交信息的格式必须是下面这种形式规范,并且以纯文本形式提供回答,回答的内容不需要包含在代码块中
```
<type>(<scope>): <subject>

<body>

<footer>
```
其中各种形式规范的定义如下:
1. 提交类型(type):描述提交的目的或类型,一般使用下面几种常见类型之一:
- feat: 引入新功能或增强功能。
- fix: 解决和修复错误或问题。
- chore: 对非用户界面元素进行更改。
- refactor: 重新组织或优化代码而不改变行为。
- ci: 调整CI/CD流程。
- test: 增强或修改测试套件。
- docs: 更新或修改文档。
- revert: 回滚到以前的状态。
2. 范围(scope)(可选):描述变更的影响范围,某个功能模块、组件或者分支的名称。
3. 主题(subject):简明扼要地描述变更的内容,一般限制在50个字符以内。
4. 主体(body)(可选):详细描述变更的内容,可以使用多行。
5. 页脚(footer)(可选):包含一些元信息,比如关联的 Issue 编号、变更的关闭类型等。
例如一个示例返回如下
```
feat(推广计划): 新增推广计划增删改接口和页面
  1. 新增推广计划后端接口
  2. 新增推广计划前端页面
  3. 新增推广计划逻辑功能
无相关 issue

```

这是 `git diff --staged` 命令的输出结果:
{diff}

后续在提交代码的时候,点击这个按钮,就可以自动生成 git commit 信息了,如下所示

20240422-25

Anything-LLM

第二个 AI 工具是 Anything-LLM,一个可以用来接入 LLM 构建自己的知识库的开源软件,众所周知类似于 ChatGPT 的这种问答程序,都是只能回答一些通用知识,除了知识内容不是最新的以外对于很多专业的内容是无法回答的,并且有些时候会一本正经的胡说八道。

当下解决这个问题的方式无非两种,一种是基于 Base 模型结合自有数据进行微调;一种是采用 RAG 检索增强生成技术,将专业领域知识和原始提问转化为向量,通过向量检索再结合大模型进行问答。

Anything-LLM 就是一款 RAG 方案的实现产品,用户可以自行上传文档,文档内容被向量化存储到向量数据库里面,在进行问答的时候采用向量相似度检索,查询相关的内容,再结合 LLM 进行问答。

Anything-LLM 当前支持的 LLM 很多,支持的向量化模型也很多,同时支持的向量数据库也有很多,如下所示。

20240422-26
20240422-28

安装实操

Anything-LLM 的安装非常简单,官网上 https://useanything.com/download 可以直接下载对应的安装包,也可以通过 docker 一行代码进行部署。

20240422-27

docker 安装脚本

export STORAGE_LOCATION=$HOME/anythingllm && 
mkdir -p $STORAGE_LOCATION && 
touch "$STORAGE_LOCATION/.env" && 
docker run -d -p 3001:3001 
--cap-add SYS_ADMIN 
-v ${STORAGE_LOCATION}:/app/server/storage 
-v ${STORAGE_LOCATION}/.env:/app/server/.env 
-e STORAGE_DIR="/app/server/storage" 
mintplexlabs/anythingllm

安装完成过后,首次打开的时候会要求选择一个 LLM,并且要求输入相应的 EndPointAPI Key,这个可以根据自身的情况进行选择,我这边使用的是 Azure OpenAI 所以输入的都是 Azure 相关配置。

进入主界面以后会需要创建一个 Workspace,大家可以将一类的工作或者学习放到一个 Workspace 中,比如我这边创建 Java 极客技术这个 Workspace,这里我们来测试一下,首先在没有上传相关文档的时候,我提问一下,通义灵码是什么?

有印象的小伙伴应该知道我们前面写过一篇公众号文章介绍过通义灵码,不了解的可以去看看这篇文章,可以看到大模型在一本正经的胡说八道。

20240422-29

然后将之前写的那篇公众号文章的 MD 文档进行上传,并且保存和向量化一下。

20240422-30

等待一会完成向量化过后,再次提问,发现这次回答的就很准确了,并且还列出了对应的文档资料。

20240422-31

整个效果还是很不错的,部署安装以及使用都很丝滑,感兴趣的小伙伴可以去试试,这种工具做的工作跟我们上面提到的是完全一样的,现将文档向量化存储到向量数据库中,然后将问题向量化进行向量检索,将检索出来的相关文档和提问再一起提供给 LLM 进行回答,如果我们自己实现的话,也完全可以基于 LangChain 进行实现,原理是一样的。

总结

上面的两个工具都很不错,用好了都可以提升我们的工作和学习效率,但是都有一个共性的问题,那就是都需要外接 LLM,不管是自建还是使用其他厂商的 LLM,意味着需要花钱。

大模型很好用,虽然现在还没完全像水电一样普及,但是相信在不久的将来一定会像水电一样,普及在互联网的各个产品上,那个时候的费用肯定会低很多。

就像以前的网络流量费用一样,一开始很慢而且也会贵,现在基本上到处都有免费的 WiFi,期待那一天的到来。