1.什么是Prompt?什么是temperature?什么是system Prompt?简单举例解释?
答:
prompt是输入给人工智能模型的指令,引导模型给出相应的输出。
temperature是控制文本生成随机性的参数。范围为[0,1],为0表示最保守,为1表示最有创意。
system prompt:提供给模型的一个上下文指令,用于设置谈话的背景和角色。
关键词:提示;随机性;保守;创意;背景
举例:
System Prompt: “你是一个历史学家,专门研究中国古代历史。”
Prompt: “请介绍一下唐朝的繁荣时期。”
输出: “唐朝是中国历史上一个非常繁荣的朝代,尤其在玄宗统治时期,经济、文化和军事都达到了顶峰。”
2.获取LLM API的程序代码理解解释和复现?
答:
伪代码如下:
1)创建一个API客户端对象
2)构建输入模型的参数结构
3)获取调用结果即可
关键词:API;prompt;temperature;
3.prompt编写清晰、具体的指令的技巧?举例说明?
答:
使用分割符。如逗号包括的内容,引号中间的内容等。
4.结构化的输出的示例?代码实现?
答:示例如下:
"""
请生成包括电影名称、作者和类别的三本虚构的、非真实存在的中文电影清单,\
并以 JSON 格式提供,其中包含以下键:book_id、title、author、genre。
"""
关键词:格式化输出;JSON;HTML;
5.模型检查是否满足条件?举例说明?
答:
判断条件:
您将获得由三个引号括起来的文本。\
如果它包含一系列的指令,则需要按照以下格式重新编写这些指令:
第一步 - ...
第二步 - …
…
第N步 - …
如果文本中不包含一系列的指令,则直接写“未提供步骤”。"
示例如下:
"""
泡一杯茶很容易。首先,需要把水烧开。\
在等待期间,拿一个杯子并把茶包放进去。\
一旦水足够热,就把它倒在茶包上。\
等待一会儿,让茶叶浸泡。几分钟后,取出茶包。\
如果您愿意,可以加一些糖或牛奶调味。\
就这样,您可以享受一杯美味的茶了。
"""
输出结果
Text 1 的总结:
第一步 - 把水烧开。
第二步 - 拿一个杯子并把茶包放进去。
第三步 - 把烧开的水倒在茶包上。
第四步 - 等待一会儿,让茶叶浸泡。
第五步 - 取出茶包。
第六步 - 如果愿意,可以加一些糖或牛奶调味。
第七步 - 尽情享受一杯美味的茶。
6.提供少量示例?举例说明?
答:
示例如下:
prompt = f"""
你的任务是以一致的风格回答问题(注意:文言文和白话的区别)。
<学生>: 请教我何为耐心。
<教师>: 天生我材必有用,千金散尽还复来。
<学生>: 请教我何为坚持。
<教师>: 故不积跬步,无以至千里;不积小流,无以成江海。骑骥一跃,不能十步;驽马十驾,功在不舍。
<学生>: 请教我何为孝顺。
"""
结果如下:
<教师>: 孝者,尊亲之至也。夫孝,德之本也,教之所由生也。父母者,人生之本也,尽孝之道,莫大于尊亲。故曰:“孝在于质实,不在于饰貌。”是故,孝顺之道,不仅在养体承志,更在敬之以诚,和颜以色,问省其安否,曲意以奉事,此乃孝顺之真谛也。
7.给模型时间去思考的技巧有哪些?
答:
关键词:引导;深入思考;指定完成步骤;
指定完成步骤示例如下:
text = f"""
自工业革命以来,装卸作业一直是物流、港口、仓储和制造业中的核心环节。/
从初期的人工搬运、小型机械辅助,到近几十年的大型装载机和叉车等设备的普及,/
这一领域已经经历了数次技术飞跃。然而,随着全球制造业和物流业的高速发展,/
传统的装卸方式已经不能满足现代复杂、高效率的需求。/
全球工业界已经从机械化、电气化、自动化进入到数字化和智能化的新时代。/
其中,自主化装卸机器人作为工业发展的前沿,其发展速度和广度直接关系到/
产业链的流通效率和成本控制。据国际机器人联合会(IFR)2021年报告指出,/
物流与仓储行业的机器人应用呈现爆发性增长,其中大部分是自主化装卸机器人。
"""
prompt = f"""
1-用一句话概括下面用<>括起来的文本。
2-给出这段话的英文摘要。
3-给出一些论文题目的建议。
4-输出一个 JSON 对象,其中包含以下键:论文题目,创新点。
请使用以下格式:
摘要:<摘要>
翻译:<英文摘要>
名称:<论文题目>
输出 JSON 格式:<带有 论文题目 和 创新点 的 JSON 格式>
Text: <{text}>
"""
9.指导模型在下结论之前找出一个自己的解法?
答:
示例如下:
prompt = f"""
请判断学生的解决方案是否正确,请通过如下步骤解决这个问题:
步骤:
首先,自己解决问题。
然后将您的解决方案与学生的解决方案进行比较,对比计算得到的总费用与学生计算的总费用是否一致,
并评估学生的解决方案是否正确。
在自己完成问题之前,请勿决定学生的解决方案是否正确。
使用以下格式:
10.大模型的幻觉?举例说明?
答:
示例如下:大模型会给出一些不真实的信息。
prompt = f"""
给我一些研究LLM长度外推的论文,包括论文标题、主要内容和链接
"""
11.什么是词向量?什么是词嵌入?有何优势?举例说明?
答:
词向量(Embedding):表示单词的一种向量。
词嵌入:一种方法,思路为意思相近或相关的对象在嵌入空间中的距离相近。
优势:捕获单词之间的语义关系。降低维度,便于检索。
关键词:语义信息;检索增强;
12.什么是向量数据库?原理是什么?主流的有哪些?举例说明?
答:
词向量数据库:专门用于存储和检索词向量的数据库,主要关注词向量之间的特点和相似性。
原理:将数据表示为向量形式,计算数据间的余弦距离,点积等,获取与目标向量的相似度。
主流的向量数据库:
chroma:适用于初学者,轻量级,丰富功能和API
Weaviate:是一个开源向量数据库
13.什么是SDK?什么是Embedding API?代码解释说明?
答:
SDK(software develop kit)软件开发包的简称。
Embedding API:表示一种应用程序的接口,用于处理词向量的数据。
print(f'response类型为:{type(response)}') ------------“class 'zhipuai.types.embeddings.EmbeddingsResponded”表示为智普AI词嵌入回复的形式
print(f'embedding类型为:{response.object}')
--------回答的词向量的类型:“embedding类型为:list”表示为一个列表对象
print(f'生成embedding的model为:{response.model}')
--------用于生成嵌入向量的模型名称或类型 :“生成embedding的model为:embedding-2”
print(f'生成的embedding长度为:{len(response.data[0].embedding)}')
---------生成词向量的长度:“生成的embedding长度为:1024”
print(f'embedding(前10)为: {response.data[0].embedding[:10]}')
--------- 词向量的前10个数的值:“embedding(前10)为: [0.03280681, 0.05125484, -0.014820482, 0.03557062, 0.0027512622, -0.0012797196, -0.039149478, 0.00043280618, 0.0040008845, -0.016411666]”
14.数据读取、数据清洗、文档分割?代码解释说明?
答:
数据读取:可直接使用 LangChain 的 PyMuPDFLoader读取pdf文件。
数据清洗:去除换行符,空格等无关元素。采用正则表达式的方法。代码解释说明:
import re #re模块提供支持正则表达式功能,允许对字符串进行模式匹配和替换
pattern = re.compile(r'[^\u4e00-\u9fff](\n)[^\u4e00-\u9fff]', re.DOTALL) #匹配到非汉字的字符
pdf_page.page_content = re.sub(pattern, lambda match: match.group(0).replace('\n', ''), pdf_page.page_content)
#sub表示替换,将文本中所有匹配到的字符转换为空字符。消除换行符
print(pdf_page.page_content)
文档分割:单个文档需要进行分割,以便模型能够处理,分割为chunk,转换为词向量存储到词向量库中。
参数说明:chunk_size 表示每种块包含的tokens的多少;chunk_overlap表示两个块中间共享的字符数量,用于保持上下文的连贯性。
15.配置向量库、构建chroma向量库?代码解释说明?
答:
读取和分割文档。根据不同的文件类型进行加载读取。
定义词向量的模型。利用已经有的API进行定义。
生成chroma向量数据库。
代码片段理解:
# 用于遍历文件夹中的所有文件。os.walk()函数可以进入到每一个文件夹中,并迭代更改root和file的值
file_paths = []
folder_path = '../../data_base/knowledge_db'
for root, dirs, files in os.walk(folder_path):
for file in files:
file_path = os.path.join(root, file)
file_paths.append(file_path)
# 得到文件的后缀,表示文件类型
file_type = file_path.split('.')[-1]
关键词:准备工作;Embedding模型;chroma数据库;
16.什么是相似度检索?什么是MMR检索?
答:
相似度检索:使用的是余弦距离的计算。
MMR检索:考虑与查询的相似度,还考虑结果之间的多样性。
17.基于LangChain自定义Embedding?代码解释说明?
答:
将ZhipuAI的接口进行封装即可。
思路如下:
继承BaseModle的Embedding类。-------> 将ZhipuAI()定义在value的‘client’属性中------>调用ZhipuAI中的Embedding的创建功能直接使用即可。
代码解释:
# 用于生成日志
logger = logging.getLogger(__name__)