1.什么是Prompt?什么是temperature?什么是system Prompt?簡(jiǎn)單舉例解釋?
答:
prompt是輸入給人工智能模型的指令,引導(dǎo)模型給出相應(yīng)的輸出。
temperature是控制文本生成隨機(jī)性的參數(shù)。范圍為[0,1],為0表示最保守,為1表示最有創(chuàng)意。
system prompt:提供給模型的一個(gè)上下文指令,用于設(shè)置談話的背景和角色。
關(guān)鍵詞:提示;隨機(jī)性;保守;創(chuàng)意;背景
舉例:
System Prompt: “你是一個(gè)歷史學(xué)家,專門研究中國(guó)古代歷史?!?/p>
Prompt: “請(qǐng)介紹一下唐朝的繁榮時(shí)期?!?/p>
輸出: “唐朝是中國(guó)歷史上一個(gè)非常繁榮的朝代,尤其在玄宗統(tǒng)治時(shí)期,經(jīng)濟(jì)、文化和軍事都達(dá)到了頂峰?!?/p>
2.獲取LLM API的程序代碼理解解釋和復(fù)現(xiàn)?
答:
偽代碼如下:
1)創(chuàng)建一個(gè)API客戶端對(duì)象
2)構(gòu)建輸入模型的參數(shù)結(jié)構(gòu)
3)獲取調(diào)用結(jié)果即可
關(guān)鍵詞:API;prompt;temperature;
3.prompt編寫清晰、具體的指令的技巧?舉例說明?
答:
使用分割符。如逗號(hào)包括的內(nèi)容,引號(hào)中間的內(nèi)容等。
4.結(jié)構(gòu)化的輸出的示例?代碼實(shí)現(xiàn)?
答:示例如下:
"""
請(qǐng)生成包括電影名稱、作者和類別的三本虛構(gòu)的、非真實(shí)存在的中文電影清單,\
并以 JSON 格式提供,其中包含以下鍵:book_id、title、author、genre。
"""
關(guān)鍵詞:格式化輸出;JSON;HTML;
5.模型檢查是否滿足條件?舉例說明?
答:
判斷條件:
您將獲得由三個(gè)引號(hào)括起來的文本。\
如果它包含一系列的指令,則需要按照以下格式重新編寫這些指令:
第一步 - ...
第二步 - …
…
第N步 - …
如果文本中不包含一系列的指令,則直接寫“未提供步驟”。"
示例如下:
"""
泡一杯茶很容易。首先,需要把水燒開。\
在等待期間,拿一個(gè)杯子并把茶包放進(jìn)去。\
一旦水足夠熱,就把它倒在茶包上。\
等待一會(huì)兒,讓茶葉浸泡。幾分鐘后,取出茶包。\
如果您愿意,可以加一些糖或牛奶調(diào)味。\
就這樣,您可以享受一杯美味的茶了。
"""
輸出結(jié)果
Text 1 的總結(jié):
第一步 - 把水燒開。
第二步 - 拿一個(gè)杯子并把茶包放進(jìn)去。
第三步 - 把燒開的水倒在茶包上。
第四步 - 等待一會(huì)兒,讓茶葉浸泡。
第五步 - 取出茶包。
第六步 - 如果愿意,可以加一些糖或牛奶調(diào)味。
第七步 - 盡情享受一杯美味的茶。
6.提供少量示例?舉例說明?
答:
示例如下:
prompt = f"""
你的任務(wù)是以一致的風(fēng)格回答問題(注意:文言文和白話的區(qū)別)。
<學(xué)生>: 請(qǐng)教我何為耐心。
<教師>: 天生我材必有用,千金散盡還復(fù)來。
<學(xué)生>: 請(qǐng)教我何為堅(jiān)持。
<教師>: 故不積跬步,無以至千里;不積小流,無以成江海。騎驥一躍,不能十步;駑馬十駕,功在不舍。
<學(xué)生>: 請(qǐng)教我何為孝順。
"""
結(jié)果如下:
<教師>: 孝者,尊親之至也。夫孝,德之本也,教之所由生也。父母者,人生之本也,盡孝之道,莫大于尊親。故曰:“孝在于質(zhì)實(shí),不在于飾貌?!笔枪剩㈨樦?,不僅在養(yǎng)體承志,更在敬之以誠(chéng),和顏以色,問省其安否,曲意以奉事,此乃孝順之真諦也。
7.給模型時(shí)間去思考的技巧有哪些?
答:
關(guān)鍵詞:引導(dǎo);深入思考;指定完成步驟;
指定完成步驟示例如下:
text = f"""
自工業(yè)革命以來,裝卸作業(yè)一直是物流、港口、倉(cāng)儲(chǔ)和制造業(yè)中的核心環(huán)節(jié)。/
從初期的人工搬運(yùn)、小型機(jī)械輔助,到近幾十年的大型裝載機(jī)和叉車等設(shè)備的普及,/
這一領(lǐng)域已經(jīng)經(jīng)歷了數(shù)次技術(shù)飛躍。然而,隨著全球制造業(yè)和物流業(yè)的高速發(fā)展,/
傳統(tǒng)的裝卸方式已經(jīng)不能滿足現(xiàn)代復(fù)雜、高效率的需求。/
全球工業(yè)界已經(jīng)從機(jī)械化、電氣化、自動(dòng)化進(jìn)入到數(shù)字化和智能化的新時(shí)代。/
其中,自主化裝卸機(jī)器人作為工業(yè)發(fā)展的前沿,其發(fā)展速度和廣度直接關(guān)系到/
產(chǎn)業(yè)鏈的流通效率和成本控制。據(jù)國(guó)際機(jī)器人聯(lián)合會(huì)(IFR)2021年報(bào)告指出,/
物流與倉(cāng)儲(chǔ)行業(yè)的機(jī)器人應(yīng)用呈現(xiàn)爆發(fā)性增長(zhǎng),其中大部分是自主化裝卸機(jī)器人。
"""
prompt = f"""
1-用一句話概括下面用<>括起來的文本。
2-給出這段話的英文摘要。
3-給出一些論文題目的建議。
4-輸出一個(gè) JSON 對(duì)象,其中包含以下鍵:論文題目,創(chuàng)新點(diǎn)。
請(qǐng)使用以下格式:
摘要:<摘要>
翻譯:<英文摘要>
名稱:<論文題目>
輸出 JSON 格式:<帶有 論文題目 和 創(chuàng)新點(diǎn) 的 JSON 格式>
Text: <{text}>
"""
9.指導(dǎo)模型在下結(jié)論之前找出一個(gè)自己的解法?
答:
示例如下:
prompt = f"""
請(qǐng)判斷學(xué)生的解決方案是否正確,請(qǐng)通過如下步驟解決這個(gè)問題:
步驟:
首先,自己解決問題。
然后將您的解決方案與學(xué)生的解決方案進(jìn)行比較,對(duì)比計(jì)算得到的總費(fèi)用與學(xué)生計(jì)算的總費(fèi)用是否一致,
并評(píng)估學(xué)生的解決方案是否正確。
在自己完成問題之前,請(qǐng)勿決定學(xué)生的解決方案是否正確。
使用以下格式:
10.大模型的幻覺?舉例說明?
答:
示例如下:大模型會(huì)給出一些不真實(shí)的信息。
prompt = f"""
給我一些研究LLM長(zhǎng)度外推的論文,包括論文標(biāo)題、主要內(nèi)容和鏈接
"""
11.什么是詞向量?什么是詞嵌入?有何優(yōu)勢(shì)?舉例說明?
答:
詞向量(Embedding):表示單詞的一種向量。
詞嵌入:一種方法,思路為意思相近或相關(guān)的對(duì)象在嵌入空間中的距離相近。
優(yōu)勢(shì):捕獲單詞之間的語(yǔ)義關(guān)系。降低維度,便于檢索。
關(guān)鍵詞:語(yǔ)義信息;檢索增強(qiáng);
12.什么是向量數(shù)據(jù)庫(kù)?原理是什么?主流的有哪些?舉例說明?
答:
詞向量數(shù)據(jù)庫(kù):專門用于存儲(chǔ)和檢索詞向量的數(shù)據(jù)庫(kù),主要關(guān)注詞向量之間的特點(diǎn)和相似性。
原理:將數(shù)據(jù)表示為向量形式,計(jì)算數(shù)據(jù)間的余弦距離,點(diǎn)積等,獲取與目標(biāo)向量的相似度。
主流的向量數(shù)據(jù)庫(kù):
chroma:適用于初學(xué)者,輕量級(jí),豐富功能和API
Weaviate:是一個(gè)開源向量數(shù)據(jù)庫(kù)
13.什么是SDK?什么是Embedding API?代碼解釋說明?
答:
SDK(software develop kit)軟件開發(fā)包的簡(jiǎn)稱。
Embedding API:表示一種應(yīng)用程序的接口,用于處理詞向量的數(shù)據(jù)。
print(f'response類型為:{type(response)}')? ? ?------------“class 'zhipuai.types.embeddings.EmbeddingsResponded”表示為智普AI詞嵌入回復(fù)的形式
print(f'embedding類型為:{response.object}')? ??
--------回答的詞向量的類型:“embedding類型為:list”表示為一個(gè)列表對(duì)象
print(f'生成embedding的model為:{response.model}')
--------用于生成嵌入向量的模型名稱或類型 :“生成embedding的model為:embedding-2”
print(f'生成的embedding長(zhǎng)度為:{len(response.data[0].embedding)}')
---------生成詞向量的長(zhǎng)度:“生成的embedding長(zhǎng)度為:1024”
print(f'embedding(前10)為: {response.data[0].embedding[:10]}')
---------?詞向量的前10個(gè)數(shù)的值:“embedding(前10)為: [0.03280681, 0.05125484, -0.014820482, 0.03557062, 0.0027512622, -0.0012797196, -0.039149478, 0.00043280618, 0.0040008845, -0.016411666]”
14.數(shù)據(jù)讀取、數(shù)據(jù)清洗、文檔分割?代碼解釋說明?
答:
數(shù)據(jù)讀取:可直接使用?LangChain 的 PyMuPDFLoader讀取pdf文件。
數(shù)據(jù)清洗:去除換行符,空格等無關(guān)元素。采用正則表達(dá)式的方法。代碼解釋說明:
import re? ? ? #re模塊提供支持正則表達(dá)式功能,允許對(duì)字符串進(jìn)行模式匹配和替換
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表示替換,將文本中所有匹配到的字符轉(zhuǎn)換為空字符。消除換行符
print(pdf_page.page_content)
文檔分割:?jiǎn)蝹€(gè)文檔需要進(jìn)行分割,以便模型能夠處理,分割為chunk,轉(zhuǎn)換為詞向量存儲(chǔ)到詞向量庫(kù)中。
參數(shù)說明:chunk_size 表示每種塊包含的tokens的多少;chunk_overlap表示兩個(gè)塊中間共享的字符數(shù)量,用于保持上下文的連貫性。
15.配置向量庫(kù)、構(gòu)建chroma向量庫(kù)?代碼解釋說明?
答:
讀取和分割文檔。根據(jù)不同的文件類型進(jìn)行加載讀取。
定義詞向量的模型。利用已經(jīng)有的API進(jìn)行定義。
生成chroma向量數(shù)據(jù)庫(kù)。
代碼片段理解:
# 用于遍歷文件夾中的所有文件。os.walk()函數(shù)可以進(jìn)入到每一個(gè)文件夾中,并迭代更改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]
關(guān)鍵詞:準(zhǔn)備工作;Embedding模型;chroma數(shù)據(jù)庫(kù);
16.什么是相似度檢索?什么是MMR檢索?
答:
相似度檢索:使用的是余弦距離的計(jì)算。
MMR檢索:考慮與查詢的相似度,還考慮結(jié)果之間的多樣性。
17.基于LangChain自定義Embedding?代碼解釋說明?
答:?
將ZhipuAI的接口進(jìn)行封裝即可。
思路如下:
繼承BaseModle的Embedding類。-------> 將ZhipuAI()定義在value的‘client’屬性中------>調(diào)用ZhipuAI中的Embedding的創(chuàng)建功能直接使用即可。
代碼解釋:
# 用于生成日志
logger = logging.getLogger(__name__)