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)

         结果如下:

后记:

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

### AI指令使用方法 在设计与实现AI相关的指令时,通常会遵循一种特定的结构来定义这些功能。例如,在Role模板中添加类似于以下的内容可以帮助定义和扩展AI的功能: #### 定义AI指令 通过约定前缀 `/` 来标识命令,并将其集成到 Role 模板中的 `Commands` 部分[^1]。 ```yaml ## Commands - Prefix: "/" - Commands: - meow: This command makes the AI cat respond with a cute "meow". - purr: This command simulates the sound of a cat's purring. - play: This initiates an interactive game session between the user and the AI cat. - info: Provides information about the AI cat, such as its name, age, or breed. ``` 上述 YAML 结构展示了如何配置基本的指令集。每条指令都有其独特的用途,比如 `/meow` 可以让虚拟发出喵叫声;而 `/purr` 则模拟咪撒娇的声音效果。 对于更复杂的交互场景,还可以引入续写文本等功能。例如当对话被中断时,可以通过 `/continue` 命令提示模型继续未完成的话题讨论。 另外值得注意的是,如果希望进一步提升用户体验并解决可能存在的记忆丢失问题,则可以参考相关技术手段如提醒机制(reminder)。 以下是部分Python伪代码示例用于演示简单的命令处理逻辑: ```python def handle_command(command): if command == '/meow': return 'Meow~' elif command == '/purr': return '*soft purring sounds*' elif command == '/play': return 'Let\'s play! Fetch the toy mouse!' elif command == '/info': return 'I am Neko-chan, your virtual companion.' else: return 'Unknown command. Try /meow, /purr, /play, or /info.' # Example Usage print(handle_command('/meow')) # Output: Meow~ ``` 以上代码片段提供了一个基础框架,实际应用中可以根据需求调整具体行为模式以及增加额外特性支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值