6行代码就能在Mac上跑LLaMa2模型

TLDR

只需要以下6行代码就能直接在本地运行属于你自己的LLaMa2 大模型。注意,需要M1或者以上芯片

1
2
3
4
5
6
xcode-select --install # 确保你下载了Git和C/C++
git clone https://github.com/ggerganov/llama.cpp.git
cd llama.cpp
curl -L https://huggingface.co/TheBloke/Llama-2-7B-Chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_K_M.bin --output ./models/llama-2-7b-chat.ggmlv3.q4_K_M.bin
LLAMA_METAL=1 make
./main -m ./models/llama-2-7b-chat.ggmlv3.q4_K_M.bin -n 1024 -ngl 1 -p "Give me a list of things to do in BeiJing"

注意:HuggingFace可能有权限要求,直接执行会403,可以在网页端登录,到这个链接直接把模型下载下来放到 刚刚Clone的 llama.cpp 目录下的models目录里面。

原因

LLaMa2本身的模型不支持直接在Window或者Mac机器上调用,只能在Linux系统,支持N卡。

我们可以基于llama.cpp开源项目来Mac本地运行Llama 2。它从TheBloke的huggingface仓库下载Llama 7B Chat的4位优化权重,将其放入llama.cpp的模型目录中,然后使用Apple的Metal优化器来构建llama.cpp项目。

LLaMa-Chat-7B的权重应该可以在拥有8GB RAM的机器上运行(但如果你有16GB的RAM会更好)。像13B或70B这样的更大模型将需要更多的RAM。

Llama 2的非聊天权重也可以在这里找到,但是如果你想要一个更简单的聊天界面,那么更推荐使用聊天权重。

效果

  • 能够理解中文,但只能用英文回答

中文回答

  • 强制要求它用中文回答,可以输出中文,但是好像温度有点高,给生成了相关内容。(产生幻觉了)

翻译

智写AI是免费万能的ai写作聊天机器人。ai免费帮你写作文、写论文、写材料、写文案、周报月报、公务员材料、行政报告、写英语作文、写小说剧本、写短视频脚本、写营销文案等等,还能写代码。它能教你python、java、C#、C、javscript、Golang编程、系统架构设计、系统开发。它还能教你简历制作、简历模版,给你做心理咨询、给你讲故事、陪你玩文字游戏等。

GPT成功背后的秘密--向量数据库简介

向量数据库

介绍

互联网上复杂的非结构化数据正在以惊人的速度增长,比如文档、图像、视频和普通文本等形式。许多公司、组织将受益于存储和分析复杂数据,但传统数据库针对结构化数据建立,处理非结构化数据可能会很困难。如果仅通过关键词分析、数据分类可能不足以完全表示挖掘和学习到这些数据所蕴含的知识。

幸运的是,机器学习里面有一种技术叫做:向量嵌入(vector embeddings)。向量嵌入将复杂数据对象转换为在数百或数千个不同维度的数值。(简单理解为大矩阵)。目前有许多技术用于构建向量嵌入,存在一些现有的公共模型,它们具有高性能并且易于使用。

向量数据库需要专门设计处理向量嵌入的独特结构,通过比较值并找到彼此最相似的向量来索引向量,以便进行易于搜索和检索。实现的技术难度比较高,到目前为止,矢量数据库只有少数拥有大量开发和管理资源的技术巨头才能使用。

什么是向量嵌入(vector embeedings)

向量嵌入(vector embedding)是一种将非数值的词语或符号编码成数值向量的技术。它是自然语言处理(NLP)和深度学习中常用的预处理技术。

通常,向量嵌入是通过一个神经网络来学习的,该网络接收文本中的词语作为输入,并输出一个对应的词向量,其中词向量是一个数值向量,每个数值代表词语的某个特征。

例如,通过向量嵌入,我们可以将词语”dog”和”cat”表示为两个不同的数值向量,并可以通过计算两个向量的距离来判断它们的相似度。
vector embedding

如果发现通过向量映射还不好理解的话,把词向量在高维空间的嵌入投影,可视化出来就能很轻松得搞明白。词义相近的词组,会在高维空间上”距离“更近。(非常重要的理论基础)

什么是向量数据库

向量数据库是一种将数据存储为高维向量的数据库,高维向量是特征或属性的数学表示。每个向量都有一定数量的维度,范围从几十到几千不等,具体取决于数据的复杂性和粒度。向量数据库同时具有CRUD操作、元数据过滤和水平扩展等功能。

向量通常是通过对原始数据(例如文本、图像、音频、视频等)应用某种变换或嵌入函数来生成的。嵌入函数可以基于各种方法,例如机器学习模型、词嵌入、特征提取算法。

向量数据库的主要优点是它允许根据向量距离或相似性对数据进行快速准确的相似性搜索和检索。这意味着您可以使用向量数据库根据语义或上下文含义查找最相似或相关的数据,而不是使用基于精确匹配或预定义标准查询数据库的传统方法。

它们将向量嵌入组织在一起,使我们能够比较任何向量与搜索查询的向量或其他向量之间的相似度。它们也可以执行CRUD操作和元数据过滤。将传统数据库功能与搜索和比较向量的能力相结合,使得向量数据库成为强大的工具。它们在相似度搜索方面表现出色,或称为“向量搜索”。

通过向量搜索,用户可以描述他们想要找到什么,而不必知道存储对象所归属的关键字或元数据分类。同时,向量搜索还可以返回类似或近邻匹配的结果,提供了更全面的结果列表,否则这些结果可能会被隐藏起来。

向量数据库能干什么?

让我们来看一些向量搜索的常见用例:

1. 语义搜索

文本搜索通常有两种方式:词法搜索和语义搜索。词法搜索是基于模式寻找精确单词或字符串匹配,就是平时我们常说的关键字匹配。语义搜索则将搜索查询或问题的含义放入上下文中,以理解文本的含义和上下文,并获得更准确和相关的搜索结果。
向量数据库,存储和索引自然语言处理模型中的向量嵌入,以更好地理解文本字符串、句子和整个文档。使用语义搜索可以让用户更快地找到所需内容,无需了解数据分类。这不仅提供了更好的用户体验,还能提高效率。

2. 对图像、音频、视频等非结构化数据进行相似度搜索

传统数据库难以分类和存储非结构化数据集,如图像、音频、视频等。对每个对象手动应用关键字、描述和元数据也很繁琐。不同人对复杂数据对象的分类可能有所不同,使得搜索变得随意。向量数据库能够更好理解数据,对数据进行相似度搜索。

3.搜索、推荐排序

做过搜索或者推荐排序的同学,应该对FAISS 这个库都不陌生,它是一个出色向量相似搜索类库。
向量数据库是一个类似的优秀的解决方案,可用于驱动排名和推荐引擎。向量数据库具备寻找相似物品的能力,因此它成为提供相关建议和轻松排名物品的理想选择。相似度分数也可用于对物品进行排序。
因此电商领域,可以用它为用户提供与过去购买或当前正在研究的物品相似的建议。流媒体服务(音乐、短视频)可以根据用户的歌曲评级创建个性化推荐。

4. 异常检测

既然向量数据库能够很好帮人们找到相似对象,做过异常检测(风控)的小伙伴们肯定也了解,其实聚类算法做得好,那么离群检测肯定也能做好。因为原理是一体两面的,能很快很好的找到相似的实体对象,那么找到不同的对象也是轻而易举。向量数据库在这些方向的应用是非常有效的。

向量数据库实例

推荐一些向量数据库,其中包括Pinecone ,ChatGPT,AutoGPT都基于它。还有一些开源方案可以关注。

  1. Pinecone:Pinecone 是一个向量数据库,用于索引和存储向量嵌入以进行快速检索和相似性搜索。它具有 CRUD 操作、元数据过滤和横向扩展等功能。
  2. Weaviate:Weaviate 是一个开源的向量数据库,允许您在原始向量或数据对象上执行闪电般快速的纯向量相似性搜索,甚至带有过滤器。它还允许您将基于关键字的搜索与向量搜索技术相结合,以获得最先进的结果。
  3. Chroma:Chroma 是一个向量数据库,为存储和搜索高维向量提供简单的 API。它专为基于特征和属性检索数据的相似性搜索而设计。
  4. Kinetica:Kinetica 是一个 GPU 加速的数据库,可以存储和查询高维向量。它使用内存计算和分布式处理的组合来提供快速的查询性能。

为什么需要向量数据库:

答案很简单:性能

向量数据库针对大量向量数据的存储和执行操作进行了优化,每次查询通常处理数亿个向量,并且比传统数据库的处理速度快得多。以下主要介绍向量数据库最核心的几种技术和能力:

  • 执行复杂的数学运算,使用“余弦相似度”等聚类技术过滤和定位“附近”的向量
  • 提供专门的 Vector 索引,使数据检索速度显着加快并更精确
  • 以更紧凑的方式存储向量,例如通过压缩和量化向量数据,尽可能多地在内存中查询数据
  • 跨多台机器数据分片

接下来我们深入了解一下相似性搜索相关技术:

相似性搜索向量索引

衡量向量之间的相关性和相似性,最常用的指标包括欧几里得距离余弦相似度点积。传统数据库的最近邻搜索需要比较每个已索引向量,效率比较低。

向量数据库使用“最近邻”索引来评估相似对象之间或搜索查询之间的接近程度。传统的最近邻搜索需要比较每个已索引向量,效率比较低。

向量数据库使用 近似最近邻(ANN)搜索技术,来评估相似对象之间或搜索查询之间的接近程度。
常用的技术包括HNSWinverted file index(IVF)Product Quantization(PQ)等算法。

HHSW:

IVF:

PQ:

总结

向量数据库是AI时代的核心组件,也是方兴未艾的领域,值得深入研究和发展。ChatGPT、AutoGPT类AI助手的崛起将会带来类似于MongoDB、Redis级别的数据库创业机会。

智写AI介绍

智写AI是免费万能的ai写作聊天机器人。ai免费帮你写作文、写论文、写材料、写文案、周报月报、公务员材料、行政报告、写英语作文、写小说剧本、写短视频脚本、写营销文案等等,还能写代码。它能教你python、java、C#、C、javscript、Golang编程、系统架构设计、系统开发。它还能教你简历制作、简历模版,给你做心理咨询、给你讲故事、陪你玩文字游戏等。

向量数据库入门教程系列-1-基于pinecone实现语义搜索

1. Pinecone简介

Pinecone是一个简单的云原生向量数据库,为高性能的AI应用提供长期记忆。它适用于涉及大模型(LLM)、生成式人工智能(AIGC)和语义搜索(Sematic Search)的应用。使用Pinecone,可以轻松存储和查询Vector ,提供优化的性能和实时分析能力。

1.1 与Mysql对比

特性/数据库PineconeMySQL
数据类型向量数据结构化数据(如文本、数字、日期等)
数据结构无模式,数据以高维向量形式存储表格结构,数据以行和列的形式组织
索引为高维向量优化的索引B树、哈希索引等
存储方式分布式存储,云原生可以是本地存储或分布式存储(如MySQL Cluster)
查询复杂性主要用于相似性搜索支持复杂的SQL查询,如连接、子查询等
数据模型无模式有模式,需要预先定义表、列和关系

1.2 Pinecone特点

  1. 速度快:Pinecone利用了突破性的新算法,可以实现毫秒级的向量搜索,是传统搜索方法的100-1000倍速度。这使得它非常适合需要实时响应的应用。

  2. 易于集成:Pinecone提供了多种语言的客户端库,包括Python、Java、Go等,可以非常容易地在应用中集成Pinecone。并且支持主流机器学习框架,如TensorFlow、PyTorch等。

  3. 灵活可扩展:Pinecone使用了可水平扩展的分布式架构,可以根据需求轻松扩展搜索能力。并且提供了细粒度的可调参数,可以针对不同的应用场景进行优化。

  4. 可管理的SaaS:Pinecone提供了云托管的SaaS版本,开发者可以通过简单的WEB界面来管理索引和查询,无需自行部署和维护服务。

2. 初识Pinecone

如前文所说,Pinecone是云原生的应用,它直接登陆网页就能使用。借助传统数据库的概念,我们来快速了解一下Pinecone的数据结构。

  • Pod:它是一个运行Pinecone服务的预配置硬件单元,你可以理解成一个运行Docker上的数据库实例。
  • Index:可以理解成传统关系数据库的表(Table)。每个Index在Pinecone中都是一个独立的数据结构,用于存储和检索高维向量。每个索引都有其自己的数据集和相关的配置。查询和操作是针对特定Index进行的。
  • Record: 可以理解成传统关系数据库的行(Row)。每个记录都有一个唯一的ID或键。

接下来进入实战:

2.1 数据库创建

构建Pinecone数据库是极其简单的,只需要在网页上点击几下,填写一些必要的参数即可。

2.1.1 登陆注册

直接访问链接

Pasted image 20230817141430

2.1.2 容器类型和索引(Pod Type& Index )

创建一个index,最核心的参数是维数,这个很多时候取决于你的数据大小。Pod Type如前文所言,服务实例的大小,我们免费用户只能选择starter这个机型。
Pasted image 20230820085241

可以看到我们创建了一个名字为test101的index,维度为384维。注意一开始这个vectors应该是零。
Pasted image 20230819230858
后续我们通过客户端向数据库上传了80000个vector到这个index。

2.1.3 记录(record)

Pinecone索引中的每个记录record包含一个唯一的ID和一个表示密集向量嵌入的浮点数数组,可以看到数据结构实际上这样。

Pinecone基本上是以JSON格式来对数据库做CURD,我们来看看一个最简单Record例子:
image.png

这个Record由4个字段组成,分别是RecordID,可以理解为RowId,唯一标识符。Dense Vector和Sparse Vector都是指我们数据的向量表达方式。MetaData就是元数据。

3 基于Pinecone实现语义搜索

  • 安装依赖包
1
2
3
4
!pip install -qU \
"pinecone-client[grpc]"==2.2.1 \
pinecone-datasets=='0.5.0rc11' \
sentence-transformers==2.2.2

我们跳过数据准备步骤,因为它们非常耗时,直接使用Pinecone Datasets中的预建数据集来进行操作。这次教程中使用的是quora_all-MiniLM-L6-bm25,主要是美国知乎的提问问题。

  • *下载数据集

Starter这个pod支持写入10万条vector,我们选择8万条数据写入。

1
2
3
4
5
6
7
8
9
10
11
from pinecone_datasets import load_dataset

dataset = load_dataset('quora_all-MiniLM-L6-bm25')
# 删掉这次教程无关的字段
dataset.documents.drop(['metadata'], axis=1, inplace=True)
dataset.documents.rename(columns={'blob': 'metadata'}, inplace=True)
#留下8万条记录
dataset.documents.drop(dataset.documents.index[320_000:], inplace=True)
dataset.documents.drop(dataset.documents.index[:240_000], inplace=True)
#展现10条数据
dataset.head(n=10)

可以看到前10条数据
Pasted image 20230819224843

  • 配置环境

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os
    import pinecone

    # 找到你的PINECONE_API_KEY
    PINECONE_API_KEY = os.environ.get('PINECONE_API_KEY') or 'PINECONE_API_KEY'
    # 找到你的PINECONE_ENVIRONMENT
    PINECONE_ENV = os.environ.get('PINECONE_ENVIRONMENT') or 'PINECONE_ENVIRONMENT'

    pinecone.init(
    api_key=PINECONE_API_KEY,
    environment=PINECONE_ENV
    )

    如下图所示:第一个红色圆圈为PINECONE_ENVIRONMENT的参数取值。第二个圆圈为PINECONE_API_KEY的参数取值。复制粘贴到上述代码里面替换成字符串即可。
    Pasted image 20230819225008

  • 创建名为test101的index

    1
    index_name = 'test101'
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

import time

# 只有index不存在的时候,才会新建
if index_name not in pinecone.list_indexes():
pinecone.create_index(
name=index_name,
dimension=len(dataset.documents.iloc[0]['values']),
#余弦相似度
metric='cosine'
)

# 等一秒钟(wait for it)
time.sleep(1)

# 连接index
index = pinecone.GRPCIndex(index_name)

批量写入数据:

1
2
3
for batch in dataset.iter_documents(batch_size=100):

index.upsert(batch)

可以看到写入的性能曲线,有个比较陡峭的峰,感觉性能并没有很稳定。另外,数据图表有个小bug,只显示有75000条,和上面的统计信息有所冲突。
Pasted image 20230819225744

Index的数据已经写入,可以开始进行查询了。语义搜索需要将文本转换成向量的形式,也就是我们通常所说的vector embeddings过程。在本教程里,我们采用SentenceTransformer来实现句子vector embeddings(向量嵌入)。
SentenceTransformer是一个功能强大的,可以生成句子、文本和图像的embeddings的python库。它提供了许多已经训练好的模型,用户可以使用这些模型进行文本相关任务,例如文本相似度计算、文本分类等。

1
2
3
4
5
6
7
from sentence_transformers import SentenceTransformer
import torch
#默认用GPU
device = 'cuda' if torch.cuda.is_available() else 'cpu'
#展现下模型
model = SentenceTransformer('all-MiniLM-L6-v2', device=device)
model

可以看到模型的一些默认信息:

Pasted image 20230819230358

  • 查询你的问题向量
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    query = "Who was the best Chinese King?"

    # 创建一个查询的向量
    xq = model.encode(query).tolist()

    # 查询
    xc = index.query(xq, top_k=5, include_metadata=True)

    # 逐一打印结果
    for result in xc['matches']:
    print(f"{round(result['score'], 2)}: {result['metadata']['text']}")

结果如下图所示:数字表示相似度,展现了相似度排名前五的问题向量。
Pasted image 20230819230312

4. 总结

本文深入探讨了Pinecone,一款云原生向量数据库,强调了其与传统数据库如MySQL的差异。Pinecone的核心优势在于其高速、易集成、灵活性和云托管能力。通过实际示例,我们展示了如何使用Pinecone和SentenceTransformer进行语义搜索。在接下来的教程中,风爷将进一步探索如何结合向量数据库和大型模型来实现图片的语义搜索,为大家展示向量数据库更多的实际应用场景。

智写AI介绍

智写AI是免费万能的ai写作聊天机器人。ai免费帮你写作文、写论文、写材料、写文案、写网络小说、写周报月报、公务员材料、行政报告、写英语作文、写小说剧本、写短视频脚本、写营销文案等等,还能写代码。它能教你python、java、C#、C、javscript、Golang编程、系统架构设计、系统开发。它还能教你简历制作、简历模版,给你做心理咨询、给你讲故事、陪你玩文字游戏等。

Langchain 是什么?作为开发者我为什么要关心它?

什么是Langchain 🦜

Langchain是历史上增长最快的开源项目之一,这在很大程度上是由于人们对LLM的兴趣激增。

这篇文章高度概述了 langchain 帮助开发人员做的一些很酷的事情。它是为了我自己的利益而编写的,因为我探索了这个框架,如果您也好奇 langchain 可能有用的地方,我希望它能对您有所帮助。

langchain 如此强大的一些功能包括允许您将数据连接到语言模型(例如通过 API 的 OpenAI 的 GPT 模型)以及创建代理工作流程(稍后将详细介绍代理)。

Langchain为何存在?🤔

​简而言之,当今使用语言模型存在许多粗糙的问题。整个生态系统仍在发展中,因此对于开发人员来说,通常缺乏足够的工具来进行语言模型的生产部署。

诸如提示链接、日志记录、回调、持久内存和与多个数据源的高效连接等任务是 langchain 开箱即用的标准。

Langchain 还提供了一个与模型无关的工具集,使公司和开发人员能够探索多种 LLM 产品并测试最适合其用例的产品。最好的部分是,您可以在单个界面中执行此操作,而不必线性缩放您尝试支持的每个其他提供程序的代码库的大小。

Langchain的社区⭐️

评估工具时要考虑的核心事项之一是围绕它构建的社区。对于 langchain 这样的开源项目来说更是如此。截至目前,该项目在 GitHub 上拥有超过 51,000 颗星(通常用于评估开源项目受欢迎程度的指标),每月下载量达 100 万次,并且在 Discord/Twitter 上活跃。

Langchain 最近还在其核心存储库上达到了 1,000 名贡献者的里程碑,这是很少有存储库能够实现的壮举,并且说明了项目的开放性及其长期可行性。Langchain 甚至使用流行的 MIT 许可证,允许开发人员分叉代码库并在现有代码之上制作自己的版本,甚至开发商业产品。

Langchain 代理🤖

目前大型语言模型领域最热门的想法之一是代理的想法。通过使用语言模型,您基本上可以重新创建一个具有可以执行的目标和任务的编程实体。

Langchain 通过其代理 API 使使用大型语言模型创建代理变得简单。开发人员可以使用 OpenAI 函数或其他执行任务的方式来使语言模型能够采取行动。

有许多代理工具,例如 AgentGPT 等。那么 langchain 在这种情况下有何用处呢?其一,您可以使用单个界面访问多个工具框架。此外,您可以利用计划和执行功能,允许模型创建计划、执行任务和完成目标。当您正在寻找具有一定程度自主性的代理并尝试在几乎没有或没有人类反馈的情况下完成目标时,这尤其有用。虽然这在某些情况下听起来相当可怕,但鉴于今天的模型通常无法在很长一段时间内成功完成这些任务(当然,随着时间的推移,情况会变得更好),它今天的真正影响非常小。

带有语言模型的记忆🧠

如今,最强大的LLM API是OpenAI的API。该 API 没有状态,因此每次发送生成新聊天消息的请求时,您都必须传回模型回答当前查询所需的任何上下文。开发人员可以做一些轻量级的事情,例如将消息历史记录存储在 Python 列表中或将其写入文本文件,但这不能很好地扩展。

您还可以启动矢量数据库(专门用于嵌入的特殊数据库,它是表示文本含义的数字方式),但这通常需要一些工作。Langchain 有一个内存模块,可提供对多个数据存储的即插即用访问,使您可以自动保存对话的消息历史记录,进一步减少创建聊天机器人等的麻烦。

Langchain 目前支持 10 种不同的数据库集成,并且肯定很快就会推出更多数据库集成,为您保存消息历史记录的方式提供了很大的灵活性。我还预计,随着时间的推移,在 langchain 之外执行此操作的选项将会变得更好,因为已经有一些开源项目专门设计用于帮助简化管理聊天历史记录和截断的过程。

关于截断的快速说明:这是获取消息历史记录并不断缩小范围以保持在语言模型上下文窗口内的过程。有很多不同的方法可以做到这一点,事实上 ChatGPT 有一种自定义方法,但这里没有灵丹妙药,因为您最终总是不得不忽略您关心的重要信息。这就是为什么通过 langchain 的嵌入和内存如此有用。

比较工具🔍

我要提到的langchain的最后核心部分之一是动态比较模型和提示的能力。当尝试评估哪种模型更适合特定任务时,这非常有用。例如,您可能希望设置多个 GPT 3.5-turbo 和 GPT-4 模型来切换不同的系统消息,并使用比较工具来查看哪个输出更适合您的用例。这需要一些工作,但它是 kalt 在生产环境中对不同设置进行 A/B 测试的有用方法之一。

每个人都喜欢快速工程。好吧,肮脏的秘密是没有人真正喜欢即时工程,这有点麻烦。我只是希望模型能够按照预期的方式工作并执行我想要的操作。但生活并不完美,有时你必须自己做一些工作。这就是评估器的作用,它是 langchains 评估模块的一部分。它有一些不同的操作函数,例如“PairwiseStringEvalChain”(文档中的更多详细信息)。

他们甚至有一个基准测试模板笔记本,乍一看似乎是我将在自己的工作流程中使用的东西。一个快速的随机想法:模型本身通常比我们更擅长及时调整。有时深奥、详细、清晰的提示对我们来说并不容易想出来,但模型确实可以做得很好。如果您遇到提示问题,请尝试要求 GPT-4 与您一起迭代改进提示。

结束语🎙️

首先,我希望这有用。自从我忙于其他一百件事以来,我一直忽略尝试 langchain,我很高兴我终于有时间检查它(尽管是在度假时远离这 100 件事)。我的总体看法是 langchain 绝对可以解决当今的问题。我的前瞻性陈述是,我想象 LLM API 随着时间的推移会做越来越多的事情,这将使 langchain 的用处大大降低。它也完全有可能最终成为法学硕士的接口,因为人们想要有意义的平台无关设置。有一点是肯定的,Harrison 和 langchain 社区迄今为止在构建他们所拥有的东西方面已经做了一项令人难以置信的工作,它显然提供了价值,我很高兴他们正在做这项工作。

智写AI介绍

智写AI是免费万能的ai写作聊天机器人。ai免费帮你写作文、写论文、写材料、写文案、周报月报、公务员材料、行政报告、写英语作文、写小说剧本、写短视频脚本、写营销文案等等,还能写代码。它能教你python、java、C#、C、javscript、Golang编程、系统架构设计、系统开发。它还能教你简历制作、简历模版,给你做心理咨询、给你讲故事、陪你玩文字游戏等。