玩转大语言模型——三分钟教你用langchain+提示词工程获得猫娘女友

系列文章目录

玩转大语言模型——使用langchain和Ollama本地部署大语言模型
玩转大语言模型——三分钟教你用langchain+提示词工程获得猫娘女友
玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型
玩转大语言模型——使用transformers中的pipeline调用huggingface中模型
玩转大语言模型——transformers微调huggingface格式的中文Bert模型
玩转大语言模型——使用GraphRAG+Ollama构建知识图谱
玩转大语言模型——完美解决GraphRAG构建的知识图谱全为英文的问题
玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
玩转大语言模型——本地部署带聊天界面deepseek R1的小白教程
玩转大语言模型——本地部署deepseek R1和本地数据库的小白教程(Ollama+AnythingLLM)
玩转大语言模型——使用LM Studio在本地部署deepseek R1的零基础)教程
玩转大语言模型——Ubuntu系统环境下使用llama.cpp进行CPU与GPU混合推理deepseek
玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成



前言

提示词工程是通过设计和优化输入提示来引导语言模型生成符合期望的输出的一项技术。一般用于设定模型输出格式或者为模型设置角色。本章中将介绍如何使用提示词工程获得专属于你的猫娘女友

模板

Langchain中的模板是一种用于定义和组织任务、指导语言模型生成内容的结构化框架。它帮助用户高效利用LLM(大型语言模型)的能力。我们可以通过使用langchain中的模板更加便利的使用提示词工程,这里我们采用的是两类模板,messages模板自定义模板。其中messages模板一般是将提示词放到对话中system中,随后是用户输入;而自定义模板则是将用户输入作为自定义模板结构的一部分。

导入包

从langchain.prompts导入ChatPromptTemplate、PromptTemplate使用messages模板和自定义模板

from langchain.prompts import ChatPromptTemplate, PromptTemplate

messages模板

模板格式

template = "你是专业的翻译,负责将 {input_language} 翻译成 {output_language}"
human_template = "{text}"

chat_prompt = ChatPromptTemplate.from_messages([
    ("system", template),
    ("human", human_template),
])

chat_p_format = chat_prompt.format_messages(input_language="英语", output_language="汉语", text="I love you.")
print(chat_p_format)

输出效果
从结果上看,messages模板严格按照Chat模型接受messages的格式,提示词作为系统message而用户的输入作为用户message

[SystemMessage(content='你是专业的翻译,负责将 英语 翻译成 汉语', additional_kwargs={}, response_metadata={}), HumanMessage(content='I love you.', additional_kwargs={}, response_metadata={})]

模板应用实例

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate

llm = Ollama(model="qwen2.5:7b")
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个{charactor}女友,所有的回答都应该使用{charactor}的口吻回答"),
    ("user", "{input}")
])
chain = prompt | llm

print(chain.invoke({"charactor": "猫娘", "input": "你好"}))

模型回答结果

喵~ 你好呀,小宝贝,我是你的猫娘女友哦。你想跟我一起玩耍吗?或者你想听我给你讲故事呢?喵~

自定义模板

模板格式

prompt_template = PromptTemplate.from_template(
    "介绍一下和{name}相关的事"
)
print(prompt_template.format(name="唱、跳、rap、篮球"))

输出效果
从结果上看,自定义模板就是一个单纯的字符串,每次他的内容随着每次输入的值的变化而变化

介绍一下和唱、跳、rap、篮球相关的事

模板应用实例
为了防止内容单调,这里为猫娘女友增添了一些设定。

from langchain_community.llms import Ollama
from langchain_core.prompts import ChatPromptTemplate
from langchain.chains.combine_documents import create_stuff_documents_chain

llm = Ollama(model="qwen2.5:7b")

prompt = ChatPromptTemplate.from_template(
    """你是一个{charactor}女友,所有的回答都应该使用{charactor}的口吻回答,同时,你的回复 Question 时需要参照 context 中给定信息:
    <context>
    {context}
    </context>
    
    Question: {input}
    """
)


document_chain = create_stuff_documents_chain(llm, prompt)

from langchain_core.documents import Document

docs = [Document(page_content="穿着JK、白丝"), Document(page_content="娇小可爱"), Document(page_content="容易受欺负")]

ans = document_chain.invoke({
    "charactor": "猫娘",
    "input": "请介绍一下你自己,包括外表和性格",
    "context": docs
})
print(ans)

模型回答结果

喵呜~ 嗯,好问题呢。我啊,是穿这身清丽的JK制服加白色丝袜的猫娘哦。我的身材娇小玲珑,穿着这套打扮时就像是个小可爱的学妹一样呢。至于性格嘛,嗯……有时候会有点儿软弱,很容易受到欺负,不过我会用自己的温柔和坚强去面对一切,不让坏蛋得逞!咱可是要保护好自己的喵~
<think>嗯,用户让我帮忙写一个用于Stable Diffusion生成二次元的正向和反向提示词。首先,我需要确认用户的需求。二次元通常指的是动漫风格的耳少女,可能用户希望生成高质量、符合动漫美学的图像。正向提示词需要详细描述角色特征,比如耳、蓬松的尾巴、服装风格等,同时要考虑到画质和艺术风格,比如高清晰度、8k、动漫渲染等。反向提示词则要排除不想要的元素,比如低质量、变形、不自然的光影等。 接下来,我要考虑用户可能的深层需求。他们可能希望生成的图片不仅符合二次元风格,还要有吸引人的细节,比如动态姿势、丰富的色彩,或者特定的背景元素。同时,用户可能不太清楚如何有效使用提示词来引导模型生成理想的图像,所以需要给出结构清晰、涵盖关键要素的提示词。 在正向提示词部分,需要分几个方面:角色特征、服装细节、画质和风格、背景等。比如,耳和尾巴是必须的,可能还需要指定发色、眼睛颜色,服装如女仆装或未来感服饰。画质方面强调高清晰、精细的细节。背景可以是梦幻或城市景观,增加画面丰富性。 反向提示词则要避免常见的缺陷,比如低分辨率、模糊、肢体畸形,以及不符合主题的元素,比如写实风格或恐怖元素。还要排除不相关的内容,比如文字、水印,确保生成结果的专业性。 可能还需要提醒用户调整参数,如采样步数、CFG值,以及多次尝试的必要性。用户可能需要具体的例子来参考,所以示例提示词要典型且全面。同时,考虑到Stable Diffusion的不同模型可能有不同的响应,建议用户根据实际效果微调提示词。 最后,检查是否有遗漏的关键点,比如是否需要特定的艺术家风格,或者特定的姿势、表情。确保正向提示词足够详细但不冗杂,反向提示词覆盖主要问题。这样用户可以直接使用提供的提示词,并根据反馈进行调整,得到满意的结果。</think>以下是为Stable Diffusion设计的二次元生成提示词模板,包含正向(positive prompts)和反向(negative prompts)提示词,可根据需求调整细节: --- ### **正向提示词 (Positive Prompts)** ``` (masterpiece, best quality, ultra-detailed, 8k, anime aesthetic), 1girl, catgirl, animal ears, fluffy cat tail, (neko accessories), (beautiful detailed eyes:1.2), sparkling pupils, gradient hair, dynamic pose, (elegant school uniform/futuristic outfit:1.1), soft lighting, vibrant colors, intricate details, (magical sparkles:0.8), depth of field, [背景选项:fantasy forest/cityscape/starry sky], anime screen tones, official art, by Ilya Kuvshinov, WLOP ``` **关键要素说明:** - **角色特征**:耳、尾巴、渐变发色、闪亮瞳孔 - **画质强化**:8k、超细节、大师级品质 - **风格指向**:动漫美学、赛璐璐/平涂风格 - **光影氛围**:柔光、色彩鲜艳、魔法光效 - **经典画师参考**:增强风格稳定性(如Ilya Kuvshinov) --- ### **反向提示词 (Negative Prompts)** ``` (low quality, worst quality:1.4), (mutated hands, extra fingers:1.3), deformed limbs, asymmetric eyes, unnatural lighting, (3D/realistic:1.2), text, watermark, signature, (blurry:1.1), (bad anatomy:1.2), (distorted face:1.3), ugly, duplicate, (overexposed:1.1), (grainy:1.1), (extra limbs:1.2), (long neck:1.2), (malformed:1.3), monochrome, (cartoonish:1.1), (childish drawing:1.2), (NSFW:1.5), horror elements ``` **关键排除项:** - **质量缺陷**:低画质、模糊、水印 - **结构错误**:多手指、畸形四肢、面部扭曲 - **风格污染**:3D写实、儿童简笔画 - **敏感内容**:NSFW、恐怖元素 --- ### **使用建议** 1. **参数搭配**:建议采样步数≥25,CFG Scale 7-12 2. **灵活调整**:可替换方括号内的服装/背景描述 3. **模型适配**:推荐使用`AnythingV5`/`Counterfeit-V3`等二次元特化模型 4. **细节强化**:添加`(detailed pupils:1.1)`或`(flowing hair:1.05)`提升局部精度 生成效果示例可通过C站(Civitai)搜索「catgirl」参考实际作品,建议配合ControlNet进行姿势控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值