From ec0a13a56e37932e97797c10536e045487584083 Mon Sep 17 00:00:00 2001 From: msb_31955 Date: Wed, 4 Feb 2026 22:05:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8D=A0=E4=BD=8D=E7=AC=A6=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=90=9E=E5=AE=9A=E3=80=82=E3=80=82=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 02-提示词模板/03-ICL入门.py | 54 +++++++++++++++++++ 02-提示词模板/04-聊天提示词.py | 36 +++++++++++++ 02-提示词模板/05-聊天提示词+ICL.py | 50 +++++++++++++++++ .../06-聊天提示词快速使用.py | 33 ++++++++++++ 4 files changed, 173 insertions(+) create mode 100644 02-提示词模板/03-ICL入门.py create mode 100644 02-提示词模板/04-聊天提示词.py create mode 100644 02-提示词模板/05-聊天提示词+ICL.py create mode 100644 02-提示词模板/06-聊天提示词快速使用.py diff --git a/02-提示词模板/03-ICL入门.py b/02-提示词模板/03-ICL入门.py new file mode 100644 index 0000000..36ec71f --- /dev/null +++ b/02-提示词模板/03-ICL入门.py @@ -0,0 +1,54 @@ +from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate + +from langchain_openai import ChatOpenAI + +from env_util import DASHSCOPE_API_KEY, DASHSCOPE_BASE_URL + +# llm对象就是调用大模型的对象 +llm = ChatOpenAI( + model = "qwen-plus", + base_url=DASHSCOPE_BASE_URL, + api_key=DASHSCOPE_API_KEY, + temperature=0.8, +); + +# 提示词 +examples = [ + { + "question": "罗纳尔多·路易斯·纳萨里奥·德·利马 世界杯进了多少球?", + "answer": """ + 中间问题:罗纳尔多·路易斯·纳萨里奥·德·利马 参加了哪几届世界杯? + 中间答案:………… + 中间问题:罗纳尔多·路易斯·纳萨里奥·德·利马 分别在这几届进了多少球? + 中间答案:………… + 最终答案:罗纳尔多·路易斯·纳萨里奥·德·利马 世界杯进了xx球。 + """ + }, + { + "question": "周星驰参演了多少部电影?", + "answer": """ + 中间问题:周星驰哪几年参演了电影? + 中间答案:………… + 中间问题:周星驰分别在这几年参演了多少电影? + 中间答案:………… + 最终答案:周星驰参演了xx部电影。 + """ + } +] + +base_template = PromptTemplate.from_template("问题:{question}\n{answer}") + +example_template = FewShotPromptTemplate( + example_prompt = base_template, # 前面的模板格式 + examples = examples, # ICL的示例 + suffix = "问题:{input}", + input_variables=["input"] +) + +chain = example_template | llm + +input = {"input": "梅西世界杯进了多少球?"} + +resp = chain.invoke(input) + +print(resp) \ No newline at end of file diff --git a/02-提示词模板/04-聊天提示词.py b/02-提示词模板/04-聊天提示词.py new file mode 100644 index 0000000..f5c39f9 --- /dev/null +++ b/02-提示词模板/04-聊天提示词.py @@ -0,0 +1,36 @@ +from langchain_core.messages import HumanMessage +from langchain_core.prompts import PromptTemplate, FewShotPromptTemplate, ChatPromptTemplate, MessagesPlaceholder + +from langchain_openai import ChatOpenAI + +from env_util import DASHSCOPE_API_KEY, DASHSCOPE_BASE_URL + +# llm对象就是调用大模型的对象 +llm = ChatOpenAI( + model = "qwen-plus", + base_url=DASHSCOPE_BASE_URL, + api_key=DASHSCOPE_API_KEY, + temperature=0.8, +); + +# {topic}:变量占位符 +# MessagesPlaceholder("msg") 消息占位符 +# ("system","你是一个相声演员") + +# 单个变量方式 +# prompt_template = ChatPromptTemplate.from_messages([ +# ("system","你是一个相声演员"), # 给大模型一个定位 +# ("user","给我来段{topic}") # 需要用户输入一个变量 +# ]) + +# 全部内容由用户输入的方式 +prompt_template = ChatPromptTemplate.from_messages([ + ("system","你是一个相声演员"), # 给大模型一个定位 + MessagesPlaceholder("input") # 需要用户完整输入 +]) + +chain = prompt_template | llm + +resp = chain.invoke({"input": [HumanMessage(content = "给我来段贯口")]}) + +print(resp) \ No newline at end of file diff --git a/02-提示词模板/05-聊天提示词+ICL.py b/02-提示词模板/05-聊天提示词+ICL.py new file mode 100644 index 0000000..5363740 --- /dev/null +++ b/02-提示词模板/05-聊天提示词+ICL.py @@ -0,0 +1,50 @@ +from langchain_core.messages import HumanMessage +from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder, \ + FewShotChatMessagePromptTemplate + +from langchain_openai import ChatOpenAI + +from env_util import DASHSCOPE_API_KEY, DASHSCOPE_BASE_URL + +# llm对象就是调用大模型的对象 +llm = ChatOpenAI( + model = "qwen-plus", + base_url=DASHSCOPE_BASE_URL, + api_key=DASHSCOPE_API_KEY, + temperature=0.8, +); + +# 示例 +examples = [ + {"input": "2 😫 3","output": "6"}, + {"input": "2 😫 4","output": "8"}, +]; +# 示例格式(给大模型学习的) +example_prompt = ChatPromptTemplate.from_messages( + [ + ('human',"{input}"), + ('ai',"{output}") + ] +); +# 组装ICL模板 +icl_template = FewShotChatMessagePromptTemplate( + examples=examples, + example_prompt=example_prompt, +); + +# 聊天模板,组合上ICL +prompt_template = ChatPromptTemplate.from_messages([ + ("system","你是一个智能助手"), + icl_template, + MessagesPlaceholder("ques") +]); + +# 组装执行 +chain = prompt_template | llm + +resp = chain.invoke( + # 课程里说可以不加[],但是测试得出,[]必须要有。。。。 + {"ques": [HumanMessage(content = "2 😫 67")]} +); + +print(resp) \ No newline at end of file diff --git a/02-提示词模板/06-聊天提示词快速使用.py b/02-提示词模板/06-聊天提示词快速使用.py new file mode 100644 index 0000000..769c61e --- /dev/null +++ b/02-提示词模板/06-聊天提示词快速使用.py @@ -0,0 +1,33 @@ +from langchain_core.messages import HumanMessage +from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder, \ + FewShotChatMessagePromptTemplate, PromptTemplate + +from langchain_openai import ChatOpenAI + +from env_util import DASHSCOPE_API_KEY, DASHSCOPE_BASE_URL + +# llm对象就是调用大模型的对象 +llm = ChatOpenAI( + model = "qwen-plus", + base_url=DASHSCOPE_BASE_URL, + api_key=DASHSCOPE_API_KEY, + temperature=0.8, +); + + +s = PromptTemplate.from_template("你是个相声演员,给我来段{topic}。"); +print(s) +prompt = ( + PromptTemplate.from_template("你是个相声演员,给我来段{topic}。") + + ",要求:1、内容搞笑。" + + "2、输出采用{language}" +) +print(prompt) +chain = prompt | llm + +resp = chain.invoke( + {"topic": "贯口","language": "English"} +) + + +print(resp) \ No newline at end of file