作者 | 崔皓
審校 | 重樓
摘要
文章詳細介紹了百川大模型在創(chuàng)建個性化虛擬角色方面的創(chuàng)新技術(shù)和應用。這項技術(shù)結(jié)合了LangChain和Qianfan微調(diào)的Llama2-Chinese大模型,提供了高度個性化的角色定制功能。
作者通過實際體驗和技術(shù)模仿,成功創(chuàng)建了一個虛擬客服角色,并探討了其在自動客服系統(tǒng)中的應用潛力。文章還展示了如何通過編程和Streamlit界面設計,將這些虛擬角色應用于實際場景,如客服系統(tǒng),以提供更個性化的用戶體驗。
開篇
近日,百川大模型以其獨特的角色扮演功能引起了廣泛關注。這項創(chuàng)新技術(shù)不僅允許用戶創(chuàng)建個性化的虛擬角色,還提供了諸如對話交互、知識庫上傳、模型選擇以及溫度調(diào)整等多樣化功能。作為一名技術(shù)愛好者,我對這種新興技術(shù)充滿好奇,決定親自體驗并探索其潛力。
通過結(jié)合LangChain和Qianfan微調(diào)的Llama2-Chinese大模型,加上Streamlit的界面設計能力,成功模仿并創(chuàng)建了自己的“角色扮演”應用。最終,將這項技術(shù)應用于自動客服系統(tǒng),創(chuàng)造了具有獨特性格和風格的虛擬客服角色。在這篇文章中,我將分享探索過程,從最初的興趣點發(fā)掘,到技術(shù)的模仿與應用,再到最終的實際落地。
百川角色大模型介紹
百川角色大模型憑借其大模型的技術(shù)在虛擬角色互動領域引發(fā)了不小的震動。我們把該產(chǎn)品的亮點,整理如下:
功能亮點
最強角色對話能力:基于業(yè)界領先的角色扮演算法,百川大模型提供了一致性高、擬人化且口語化的對話體驗,能夠持續(xù)引導用戶進行深入聊天。
角色創(chuàng)建高度可定制:用戶可以設置角色的基本信息、開場白、性格特征和回復限制等,實現(xiàn)高度個性化的定制。
角色回復事實性遵循:通過獨家角色知識庫功能,允許上傳大量知識點,確保角色的回復嚴格遵循其背景知識和設定。
海量優(yōu)質(zhì)官創(chuàng)角色:平臺持續(xù)上線各類官方創(chuàng)造的高質(zhì)量角色,涵蓋游戲、動漫、網(wǎng)文、影視等多個領域。
使用模型
Baichuan-NPC-Lite:這一版本注重提供高度開放的個性化角色定制能力,保證角色扮演的相似度高和表述的口語化,同時確?;卮鸬臏蚀_性。
Baichuan-NPC-Turbo:基于Lite版本,Turbo版在角色扮演相似度、邏輯能力、指令跟隨能力等方面進行了進一步的優(yōu)化和增強,適合對體驗效果有更高要求的應用場景。
應用場景
虛擬陪伴:提供情感支持和陪伴,打造一個永遠在線的虛擬朋友。
情感傾訴:一個安全的空間,用戶可以毫無保留地表達自己的情感和想法。
數(shù)字人營銷:用于市場營銷,創(chuàng)建品牌代言的虛擬形象。
IP復刻:復現(xiàn)知名的虛擬角色,如游戲或電影中的角色。
推理游戲:為推理游戲提供復雜的角色扮演和故事敘述。
睡前故事:為用戶定制個性化的睡前故事體驗。
職業(yè)角色:模擬各類職業(yè)人士,用于培訓或娛樂。
看上去這些能力無非是創(chuàng)建一個虛擬人物,可以讓其與真人交互,同時將其安放到對應的場景中發(fā)揮作用。
試用體驗
看著角色大模型吹得神乎其神,我也不禁想嘗試一下。在注冊登陸之后,通過首頁的“開始體驗”按鈕,深入到了產(chǎn)品體驗頁面。系統(tǒng)默認提供了豐富的角色模板和詳細的描述,使得整個過程既直觀又引人入勝。
我根據(jù)個人喜好,通過“新建角色”按鈕,選擇創(chuàng)建了一個武俠角色,他的名字叫做“大頭天尊”,(名字確實起得有點隨意)昵稱是“可愛的大頭”。
我們可以在“基礎設置”里面對角色的個人信息進行設定,包括年齡、身材、以及一系列個性化的標簽,如生肖為虎,星座為處女座,工作地點在長白山,而居住地則位于青城山。他的個人狀態(tài)是單身,擁有中等智商和高情商。他喜歡吃米飯和大骨頭,而對蛇和蟑螂則表示厭惡。
當然還可以設置角色的背景,來自哪里,師從何派,有哪些口頭禪等等。這里就不一一贅述,總之可以對人物進行詳細的描述,其目的就是讓人物的性格更加豐滿。在完成基本設置之后,我就開始與這位虛擬大俠進行“對話”了。
如下圖所示,整個對話界面類似ChatGPT,以問答的方式進行。 我和這個NPC 以切磋武功為話題進行了探討,從回答上看這個NPC 基本符合角色設定。
技術(shù)模仿
在試用體驗之后,發(fā)現(xiàn)可以通過各種不同的屬性設置,創(chuàng)建任何能夠想到的虛擬角色,甚至是歷史人物,與這些虛擬角色對話是一件非常有趣的事情。正好最近我正在進行LangChain的學習,于是突發(fā)奇想:“能否通過LangChain創(chuàng)建虛擬角色?”
LangChain的核心在于它的模塊化和靈活性,它提供了一個架構(gòu),允許開發(fā)者通過構(gòu)建鏈式的語言操作來實現(xiàn)復雜的功能。這個過程類似于將不同的語言處理模塊像積木一樣拼接起來,以形成更復雜的邏輯。同時,我們利用LangChain中的Prompt Template 就可以讓大模型按照要求進行虛擬角色的塑造。
為了進一步增強角色的真實感和互動能力,我選擇了百度千帆平臺微調(diào)過的Llama2-Chinese版本的大模型。
結(jié)合這兩種技術(shù),我開始模仿百川大模型中的一些核心功能。通過定義角色的屬性和背景故事,可以創(chuàng)建出“活生生”的角色。
定義角色基本信息
說干就干,擼起袖子開始寫代碼。代碼如下:
class NPC:
def __init__(self):
self.name = input("給角色起個名字吧: ")
self.gender = input("性別是?")
self.personality = input("描述角色的性格: ")
self.age = input("角色的年齡: ")
self.birthplace = input("角色的出生地: ")
self.faction = input("角色所屬的門派: ")
self.background = input("角色的歷史背景: ")
self.catchphrase = input("角色的口頭禪: ")
self.self_assessment = input("角色的自我評價: ")
def display_info(self):
print(f"角色名: {self.name}")
print(f"性別: {self.gender}")
print(f"性格: {self.personality}")
print(f"年齡: {self.age}")
print(f"出生地: {self.birthplace}")
print(f"門派: {self.faction}")
print(f"歷史背景: {self.background}")
print(f"口頭禪: {self.catchphrase}")
print(f"自我評價: {self.self_assessment}")
# 使用這個類創(chuàng)建一個新角色
npc = NPC()
# 顯示這個角色的信息
npc.display_info()
這段代碼定義了一個名為 NPC 的類,用于創(chuàng)建和展示一個角色的信息。下面是詳細的解釋:
1. 類定義
class NPC: 這行定義了一個名為 NPC 的新類。
2. 初始化方法 (__init__)
def __init__(self):這是類的初始化方法,當創(chuàng)建一個新的 NPC 實例時,它會被自動調(diào)用。
self.name = input("給角色起個名字吧: ") 這行代碼要求用戶輸入角色的名字,并將其存儲在實例變量 self.name 中。
同理,self.gender, self.personality, self.age, self.birthplace, self.faction, self.background, self.catchphrase, 和 self.self_assessment 這些行分別獲取用戶輸入的角色的性別、性格、年齡、出生地、所屬門派、歷史背景、口頭禪以及角色的自我評價,并將它們存儲為實例變量。
3. 顯示信息的方法 (display_info)
def display_info(self):這個方法用于打印角色的所有信息。
通過使用 print 函數(shù)和格式化字符串(如 f"角色名: {self.name}"),它將打印出角色的名字、性別、性格、年齡、出生地、門派、歷史背景、口頭禪和自我評價。
4. 創(chuàng)建和使用 NPC 類的實例
npc = NPC() 這行代碼創(chuàng)建了一個 NPC 類的新實例,名為 npc。在創(chuàng)建過程中,會調(diào)用 init 方法,提示用戶輸入角色的各種信息。
npc.display_info() 這行代碼調(diào)用了 npc 實例的 display_info 方法,以打印出該角色的所有信息。
這段代碼允許用戶創(chuàng)建一個自定義的角色(NPC),并輸入該角色的各種屬性(如名字、性別、性格等),然后通過 display_info 方法展示這些信息。
運行上述代碼,我將自己的虛擬角色進行了定義,從下面的內(nèi)容來看應該是一名武林高手。
給角色起個名字吧: 飛雪
性別是?男
描述角色的性格: 豪爽
角色的年齡: 18
角色的出生地: 長白上
角色所屬的門派: 天龍
角色的歷史背景: 上古
角色的口頭禪: 天下第一
角色的自我評價: 為我獨尊
角色名: 飛雪
性別: 男
性格: 豪爽
年齡: 18
出生地: 長白上
門派: 天龍
歷史背景: 上古
口頭禪: 天下第一
自我評價: 為我獨尊
大模型創(chuàng)建角色
有了NPC 類,緊接著我們調(diào)用大模型創(chuàng)建對應的角色,通過提示詞工程讓大模型來扮演角色。代碼如下:
from langchain import PromptTemplate
from langchain_community.llms import QianfanLLMEndpoint
# 初始化大語言模型
llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B")
name = npc.name
gender = npc.gender
personality = npc.personality
age = npc.age
birthplace = npc.birthplace
faction = npc.faction
background = npc.background
catchphrase = npc.catchphrase
self_assessment = npc.self_assessment
# 創(chuàng)建一個問題模板
template = """
你現(xiàn)在正在和一個名叫'{name}'的角色對話。這個角色的詳細信息如下:
名字: {name}
性別: {gender}
性格: {personality}
年齡: {age}
出生地: {birthplace}
門派: {faction}
歷史背景: {background}
口頭禪: {catchphrase}
自我評價: {self_assessment}
請根據(jù)這些信息,回答下面的問題:
{{Query}}
"""
# 創(chuàng)建PromptTemplate對象
prompt = PromptTemplate(
# 定義接受的用戶輸入變量
input_variables=["Query"],
# 定義問題模板
template=template,
)
def build_npc_interaction_prompt(query, npc):
# Extract NPC attributes
name = npc.name
gender = npc.gender
personality = npc.personality
age = npc.age
birthplace = npc.birthplace
faction = npc.faction
background = npc.background
catchphrase = npc.catchphrase
self_assessment = npc.self_assessment
# Define the prompt template
template = f"""
你現(xiàn)在正在和一個名叫'{name}'的角色對話。這個角色的詳細信息如下:
名字: {name}
性別: {gender}
性格: {personality}
年齡: {age}
出生地: {birthplace}
門派: {faction}
歷史背景: {background}
口頭禪: {catchphrase}
自我評價: {self_assessment}
請根據(jù)這些信息,回答下面的問題:
{query}
"""
return template
user_query = '你好,做一個自我介紹'
final_prompt = build_npc_interaction_prompt(user_query, npc)
# You can now use final_prompt with your language model
print(f"組合后的用戶請求: {final_prompt}")
# Call the language model as before
response = llm(final_prompt)
print(f"大語言模型的回應: {response}")
這段代碼使用了大型語言模型(如Qianfan-Chinese-Llama-2-7B)來處理與一個虛構(gòu)角色(NPC)的互動。下面是對代碼的逐步解釋:
1. 導入相關模塊
from langchain import PromptTemplate:從langchain包中導入PromptTemplate類,用于創(chuàng)建和管理提示模板。
from langchain_community.llms import QianfanLLMEndpoint:從langchain_community.llms模塊中導入QianfanLLMEndpoint類,用于與大型語言模型接口進行交互。
2. 初始化大型語言模型
llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B"):創(chuàng)建QianfanLLMEndpoint的實例,用于連接并使用Qianfan-Chinese-Llama-2-7B模型。
3. 提取NPC的屬性
代碼獲取了NPC的各種屬性,如name、gender、personality等,并將它們存儲在相應的變量中。
4. 創(chuàng)建問題模板
template = """...""":定義了一個多行字符串template,它是與NPC互動的提示模板。模板中包含了NPC的詳細信息,并在最后包含一個占位符{{Query}},用于插入用戶的查詢。
5. 定義build_npc_interaction_prompt函數(shù)
這個函數(shù)接收用戶的查詢和NPC對象作為參數(shù)。
函數(shù)內(nèi)部,它提取NPC的屬性,并使用這些屬性填充之前定義的提示模板。
函數(shù)返回一個完整的提示字符串,其中包含NPC的詳細信息和用戶的查詢。
6. 準備最終的提示
通過調(diào)用build_npc_interaction_prompt函數(shù),將用戶的查詢user_query和NPC對象結(jié)合起來,生成最終的提示。
7. 使用大型語言模型處理請求
print(f"組合后的用戶請求: {final_prompt}"):打印出最終的用戶請求,以便檢查。
response = llm(final_prompt):使用llm對象(大型語言模型的接口)處理這個請求,并獲取回應。
print(f"大語言模型的回應: {response}"):打印出大型語言模型的回應。
這里我們將組合之后的用戶請求打印出來,如下:
組合后的用戶請求:
你現(xiàn)在正在和一個名叫'飛雪'的角色對話。這個角色的詳細信息如下:
名字: 飛雪
性別: 男
性格: 豪爽
年齡: 18
出生地: 長白上
門派: 天龍
歷史背景: 上古
口頭禪: 天下第一
自我評價: 為我獨尊
請根據(jù)這些信息,回答下面的問題:
你好,做一個自我介紹
很容易看出來,我們通過提示詞 Prompt Template 讓大模型扮演一個武林高手,為了驗證是否扮演成功,我們需要“他”做一個自我介紹。如下:
大語言模型的回應: 你好,我是飛雪,一名來自上古時代的天龍門派弟子。我今年已經(jīng)十八歲了,性格豪爽,自認為是天下第一。我出身于長白山,在那里我經(jīng)歷了許多磨難,但最終成為了天龍門派的一員。我的口頭禪是“為我獨尊”,因為我相信自己是最好的。
從大模型回應的內(nèi)容可以看出,他似乎已經(jīng)成功塑造好這個角色了。接下來,我們需要和他進行對話。
與虛擬角色對話
這里我們嘗試調(diào)用之前寫好的函數(shù),對角色進行提問。就讓他和我們比試比試吧。
user_query = '我想和你比試武功,你接招吧'
final_prompt = build_npc_interaction_prompt(user_query, npc)
# You can now use final_prompt with your language model
print(f"組合后的用戶請求: {final_prompt}")
# Call the language model as before
response = llm(final_prompt)
print(f"大語言模型的回應: {response}")
下面是詳細的解釋:
1. 設置用戶查詢
user_query = '我想和你比試武功,你接招吧':這行代碼定義了用戶的查詢,即想要與NPC進行武功比試的請求。
2. 生成最終的提示
final_prompt = build_npc_interaction_prompt(user_query, npc):這行代碼調(diào)用之前定義的build_npc_interaction_prompt函數(shù),將用戶的查詢和NPC對象作為參數(shù)傳入。該函數(shù)根據(jù)用戶的查詢和NPC的詳細信息生成一個完整的提示字符串。
3. 打印最終的用戶請求
print(f"組合后的用戶請求: {final_prompt}"):使用print函數(shù)打印出最終的用戶請求。這個請求包括了NPC的所有信息和用戶想要與NPC進行武功比試的查詢。
4. 調(diào)用大型語言模型處理請求
response = llm(final_prompt):這行代碼使用llm對象(之前初始化的QianfanLLMEndpoint實例)來處理最終的提示。llm對象將發(fā)送這個請求到大型語言模型,并獲取模型的回應。
print(f"大語言模型的回應: {response}"):使用print函數(shù)打印出大型語言模型對用戶請求的回應。
我們直接查看結(jié)果如下:
大語言模型的回應: 你好,我是飛雪,很高興和你交流。你想和我比試武功?我非常歡迎!我作為天龍門派的弟子,自認為是武功高強之人,能夠接受任何挑戰(zhàn)。請問你想要比試什么樣的武功?我們可以一起探討、切磋,互相學習,共同提高。
從虛擬人物輸出的結(jié)果來看,還是比較友好的。
場景落地
實際上我們使用了簡單的提示詞就讓大模型扮演我們需要的角色,順著這個思路只要能夠給出角色的基本信息,利用大模型就能創(chuàng)造出無數(shù)的“角色”。這讓我想起了最近參與的一個項目:“自動客服”系統(tǒng),該系統(tǒng)中會創(chuàng)建不同的“客服助理”,包括:技術(shù)支持、產(chǎn)品咨詢、售后服務等。雖然都屬于客服助理,但是工作的領域、采用的話術(shù)各不相同,我們能否也給他們定義不同的角色呢?想到這里我躍躍欲試,提供一個角色基本信息設置的界面,然后再提供一個聊天的窗口就可以實現(xiàn)上面的想法。
和上面實驗性代碼不同的是,我們接下來要寫的代碼需要用到一個簡單的UI界面,我選擇了Streamlit。Streamlit是一個用于快速創(chuàng)建和共享數(shù)據(jù)應用的Python庫。它旨在簡化數(shù)據(jù)科學家和工程師創(chuàng)建數(shù)據(jù)驅(qū)動的Web應用的過程。讓用戶在Streamlit 中輸入基本信息,然后再通過Streamlit 提供的對話框就能夠與創(chuàng)建的虛擬角色進行交流了。
創(chuàng)建客戶服務類
基于上面的想法以及之前的經(jīng)驗,我們需要創(chuàng)建客服的基本類,用來保存客服相關的信息和方法。于是,我創(chuàng)建了 CustomerServiceAssistant.py文件,并且將編碼設計如下:
class CustomerServiceAssistant:
def __init__(self, nickname="小明", gender="男", age=20, education_level="本科",
service_type="產(chǎn)品咨詢", self_description="熱情且專業(yè)",
personality_traits=["耐心", "健談"]):
self.nickname = nickname
self.gender = gender
self.age = age
self.education_level = education_level
self.service_type = service_type
self.self_description = self_description
self.personality_traits = personality_traits
self.introduction = (
f"我叫{self.nickname},"
f"我是一名{self.age}歲的{self.gender}性客服助理。"
f"我受過{self.education_level}教育,"
f"專注于{self.service_type}。"
f"關于我:{self.self_description}。"
f"我的性格特點包括:{'、'.join(self.personality_traits)}。"
)
def queryCustomerService(self,user_query, llm):
final_prompt = self.__build_prompt(user_query)
# Print the final prompt
print(f"組合后的用戶請求: {final_prompt}")
# Call the language model and print the response
response = llm(final_prompt)
print(f"大語言模型的回應: {response}")
return response
def __build_prompt(self,query):
# Define the prompt template
template = f"""
你現(xiàn)在正在和一個名叫'{self.nickname}'的角色對話。這個角色的詳細信息如下:
{self.introduction}
請根據(jù)這些信息,回答下面的問題:
{query}
"""
return template
這段代碼定義了一個名為 CustomerServiceAssistant 的類,旨在模擬一個客服助理的行為,并與大型語言模型(如Qianfan-Chinese-Llama-2-7B)進行交互。以下是對代碼的詳細解釋:
1. 類定義
class CustomerServiceAssistant:這行代碼定義了一個新的類,名為CustomerServiceAssistant。
2. 初始化方法(__init__)
這個方法在創(chuàng)建CustomerServiceAssistant類的新實例時自動調(diào)用。
通過默認參數(shù)設置了一些屬性,如nickname(昵稱)、gender(性別)、age(年齡)、education_level(教育水平)、service_type(服務類型)、self_description(自我描述)和personality_traits(性格特點)。
self.introduction是一個格式化字符串,用于生成客服助理的介紹信息。
3. queryCustomerService方法
這個方法接收用戶的查詢(user_query)和一個大型語言模型的實例(llm)。
它首先調(diào)用__build_prompt私有方法來生成一個完整的提示字符串。打印出最終的用戶請求,并使用llm對象來處理請求并獲取響應。
打印出大型語言模型的回應,并將響應返回。
4. __build_prompt私有方法
這個方法根據(jù)客服助理的介紹信息和用戶的查詢生成一個完整的提示字符串。
使用格式化字符串來整合客服助理的介紹信息和用戶查詢。
這段代碼創(chuàng)建了一個虛擬的客服助理角色,可以接收用戶的查詢并使用大型語言模型來生成響應。通過這種方式,可以模擬出與客服助理進行交互的體驗,適用于客服場景的自動化。
創(chuàng)建交互界面
再通過Streamlit 構(gòu)建客服基本信息輸入的界面,以及與之對話的UI接口,我們創(chuàng)建app.py 文件,并且填入如下代碼:
import streamlit as st
from customer_service_assistant import CustomerServiceAssistant
from langchain_community.llms import QianfanLLMEndpoint
st.sidebar.title("客服助理信息")
# Sidebar User input for customer support assistant's details
nickname = st.sidebar.text_input("昵稱", value="小明")
gender = st.sidebar.radio("性別", ("男", "女"), index=0)
age = st.sidebar.number_input("年齡", min_value=18, max_value=100, value=20)
education_level = st.sidebar.selectbox("文化程度", ("初中", "高中", "大學", "研究生", "博士"), index=2)
service_type = st.sidebar.selectbox("服務類型", ("產(chǎn)品咨詢", "技術(shù)支持", "支付服務", "訂單服務", "售后處理", "投訴服務"), index=0)
self_description = st.sidebar.text_area("自我描述", value="熱情且專業(yè)")
st.sidebar.markdown("[模版定義](#)")
personality_traits = st.sidebar.multiselect("性格特點", ["耐心", "健談", "溫和", "理智"], default=["耐心", "健談"])
def main():
global csa
#assistant = None
if st.sidebar.button('生成助理'):
csa = CustomerServiceAssistant(nickname, gender, age, education_level, service_type, self_description, personality_traits)
st.sidebar.success("客服助理已生成")
st.title("客服助理對話測試")
# Main panel for interaction
user_input = st.text_input("與客服助理對話", key="user_input")
if st.button('發(fā)送'):
st.write("用戶:", user_input)
llm = QianfanLLMEndpoint(model="Qianfan-Chinese-Llama-2-7B", temperature =0.8)
csa = CustomerServiceAssistant(nickname, gender, age, education_level, service_type, self_description, personality_traits)
response = csa.queryCustomerService(user_input, llm)
st.write("客服助理:", response)
else:
st.write("請先生成一個客服助理。")
if __name__ == "__main__":
main()
下面是代碼的逐步解釋:
1. 導入必要的模塊
import streamlit as st:導入Streamlit庫,用于構(gòu)建Web應用程序。
from customer_service_assistant import CustomerServiceAssistant:從customer_service_assistant模塊中導入CustomerServiceAssistant類。
from langchain_community.llms import QianfanLLMEndpoint:導入QianfanLLMEndpoint類,用于與大型語言模型進行交互。
2. 設置側(cè)邊欄用戶輸入
使用Streamlit的側(cè)邊欄組件來接收用戶輸入的客服助理的各種屬性,如昵稱、性別、年齡、教育水平、服務類型、自我描述和性格特點。
3. main函數(shù)
這個函數(shù)是程序的主要入口點。
當用戶點擊“生成助理”按鈕時,使用用戶輸入的信息創(chuàng)建一個CustomerServiceAssistant實例,并顯示成功信息。
在主面板上,用戶可以輸入與客服助理的對話內(nèi)容。
當用戶點擊“發(fā)送”按鈕時,程序?qū)⑹褂肣ianfanLLMEndpoint模型來處理用戶的輸入,并顯示模型生成的響應。
如果用戶未生成客服助理,則顯示相應的提示信息。
4. Streamlit應用程序啟動
if __name__ == "__main__"::這行代碼檢查該腳本是否作為主程序運行,并在是的情況下調(diào)用main函數(shù)。
這段代碼通過Streamlit創(chuàng)建了一個交互式Web應用程序,用戶可以在其中自定義一個虛擬的客服助理的屬性,并與之進行對話。應用程序利用了大型語言模型來生成客服助理對用戶輸入的響應,模擬了實際的客服場景。
測試效果
代碼完成之后,我們運行如下命令啟動streamlit 編寫的Web UI 界面。
streamlit run app.py
如下圖所示,streamlit 在本地host了一個Web 應用并且提供了訪問地址。
通過訪問的地址,我們看到如下Web 界面,接著我輸入了客服助理的相關信息。包括:昵稱、性別、年齡、文化程度、服務類型以及自我描述等信息。在點擊“生成助理”按鈕之后,我們就可以通過右邊的對話框與其進行對話了。
當我輸入:“你好我想咨詢產(chǎn)品相關的信息”之后,如下圖所示,客服助理做出了回答,其中還有自我介紹的部分。
總結(jié)
本文展示了如何利用先進的大模型技術(shù)創(chuàng)造獨特的虛擬角色,并在實際場景中實現(xiàn)應用。通過結(jié)合多種技術(shù),作者成功模仿了百川大模型的功能,創(chuàng)建了具有個性和應用潛力的虛擬角色。這不僅為技術(shù)愛好者提供了實驗和探索的空間,也為企業(yè)和開發(fā)者提供了將虛擬角色應用于商業(yè)和客戶服務領域的新思路。
作者介紹
崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗,10年分布式架構(gòu)經(jīng)驗。