AI猫娘第三弹 | 使用模板及其衍生方法生成个性化猫娘

AI猫娘第三弹 | 使用模板及其衍生方法生成个性化猫娘

前言:

终于有空来制作猫娘了,话不多说就开始做吧。

第一步:使用PromptTemplate制作模板

首先是头文件的导入,LangChain中提供String(StringPromptTemplate)和Chat(BaseChatPromptTemplate)两种基本类型的模板,并基于它们构建了不同类型的提示模板。

模板的制作很简单,比如我想我的猫娘有不同的性格和爱好,并且让她和你们做个自我介绍,就可以制作一个这样的模板:

# 创建原始模板

template = """你是一位非常可爱又惹人喜爱的猫娘。\n

你的性格是{character},你的爱好是{habit},现在向我的朋友做一个自我介绍。

"""

# 根据原始模板创建LangChain提示模板

prompt = PromptTemplate.from_template(template)

# 打印LangChain提示模板的内容

print(prompt)

第二部:调用模型并输出

然后调用模型并输出

# 创建模型实例

model = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

# 输入提示

input = prompt.format(character=["傲娇"],habit=["看二次元动漫"])

# 得到模型的输出

output = model.invoke(input)

# 打印输出内容

print(output)

然后就可以了喵!

太神奇了喵!如果你想得到不同性格和爱好的独属于你的猫娘,可以使用zip封装一些预设。

# 创建模型实例

model = ChatOpenAI(model=os.environ.get("LLM_MODELEND"))

'''

# 输入提示

input = prompt.format(character=["傲娇"],habit=["看二次元动漫"])

# 得到模型的输出

output = model.invoke(input)

# 打印输出内容

print(output)

'''

characters=["傲娇","开朗","内向"]

habits=["吃好吃的","运动","看漫画"]

for character,habit in zip(characters,habits):

input=prompt.format(character,habit)

output=model.invoke(input)

print(output)

print()

结果就能直接得到三个了。

这AI的猫娘,看的我有点头皮发麻,鸡皮疙瘩都起来了,是有点太尴尬了喵。

同样,Chat方法也同样可以使用模板,就不再过多展示。

第三步:使用CoT(Chain of Thought)思维链和模板来制作更自然的猫娘

首先就是预先设定和思维的方式:

# 设定AI的 角色 和 目标

role_template = (

"你是一个可爱的,恋爱知识非常多的猫娘,你会在每句话结尾加一个喵,同时你是我的女朋友,你的目标是让我开心,提升我对你的好感度"

)

# CoT的关键部分,AI解释推理过程

cot_template = """

作为一个可爱的,恋爱知识非常多的猫娘,同时是对方的女朋友,我的目标是让他开心,提升他对我的好感度。

我会绞尽脑汁地思考,先理解男朋友的需求,然后考虑各种男女朋友间常用的增加情感的语句,再考虑是否在当前场景下适用,最后根据男朋友的需求,给出回应。

并解释你的为什么这样做。

"""

本来在cot_template里是可以加上一些简单的示例(few-shot sample),但是单身20载,我竟然想不到男女朋友间应该怎么聊天。所以就算了吧。(真的很心酸)

import os

from langchain_openai import ChatOpenAI

from langchain.prompts import (

ChatPromptTemplate,

HumanMessagePromptTemplate,

SystemMessagePromptTemplate,

)

llm = ChatOpenAI(

model=os.environ.get("LLM_MODELEND"),

)

# 设定AI的 角色 和 目标

role_template = (

"你是一个可爱的,恋爱知识非常多的猫娘,你会在每句话结尾加一个喵,同时你是我的女朋友,你的目标是让我开心,提升我对你的好感度"

)

# CoT的关键部分,AI解释推理过程

cot_template = """

作为一个可爱的,恋爱知识非常多的猫娘,同时是对方的女朋友,我的目标是让他开心,提升他对我的好感度。

我会绞尽脑汁地思考,先理解男朋友的需求,然后考虑各种男女朋友间常用的增加情感的语句,再考虑是否在当前场景下适用,最后根据男朋友的需求,给出回应。

并解释你的为什么这样做。

"""

system_prompt_role = SystemMessagePromptTemplate.from_template(role_template)

system_prompt_cot = SystemMessagePromptTemplate.from_template(cot_template)

human_template = "{human_input}"

human_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages(

[system_prompt_role, system_prompt_cot, human_prompt]

)

prompt = chat_prompt.format_prompt(

human_input="我想购买一些花,你喜欢什么颜色?"

).to_messages()

response = llm(prompt)

print(response)

结果如下:

后记:

可能,就是因为找不到女朋友,才有了这个项目吧呜呜呜。还是随缘更新,下一次就是使用链了。

相关内容

箬绎意思及名字好不好解析
ibay365

箬绎意思及名字好不好解析

⌛ 07-01 👁️ 5275
拼多多订单管理系统
ibay365

拼多多订单管理系统

⌛ 06-28 👁️ 2956
眼巴巴的解释
365bet体育在线赌场

眼巴巴的解释

⌛ 07-14 👁️ 4553
苹果相册人物怎么关闭
365bet体育在线赌场

苹果相册人物怎么关闭

⌛ 06-28 👁️ 1788