背景和价值
from langchain_openai import ChatOpenAI
from langchain_core.messages import SystemMessage, HumanMessage
import os
#
from langchain.prompts import (
ChatPromptTemplate,
FewShotChatMessagePromptTemplate,
)
# 初始化 ChatOpenAI 对象
llm = ChatOpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"), # 如果未配置环境变量,请直接替换为您的 API Key
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", # 百炼兼容模式的 Base URL
model="qwen2.5-math-7b-instruct" # 指定使用的模型名称,如 qwen-plus 或其他支持的模型
)
examples = [
{"input": "罗杰有五个网球,他又买了两盒网球,每盒有3个网球,请问他现在总共有多少个网球?",
"output": "罗杰一开始有五个网球,又购买了两盒网球,每盒3个,共购买了6个网球,因此现在总共由5+6=11个网球。因此答案是11。"},
{"input": "食堂总共有23个苹果,如果他们用掉20个苹果,然后又买了6个苹果,请问现在食堂总共有多少个苹果?",
"output": "食堂最初有23个苹果,用掉20个,然后又买了6个,总共有23-20+6=9个苹果,答案是9。"},
{"input": "杂耍者可以杂耍16个球。其中一半的球是高尔夫球,其中一半的高尔夫球是蓝色的。请问总共有多少个蓝色高尔夫球?",
"output": "总共有16个球,其中一半是高尔夫球,也就是8个,其中一半是蓝色的,也就是4个,答案是4个。"},
]
# This is a prompt template used to format each individual example.
example_prompt = ChatPromptTemplate.from_messages(
[
("human", "{input}"),
("ai", "{output}"),
]
)
few_shot_prompt = FewShotChatMessagePromptTemplate(
example_prompt=example_prompt,
examples=examples,
)
print(few_shot_prompt.format())
final_prompt = ChatPromptTemplate.from_messages(
[
few_shot_prompt,
("human", "{input}"), #这里的human是用户的输入。chain.invoke({"input": "xxxx"}) 里面的input
]
)
final_prompt
print(final_prompt)
chain = final_prompt | llm
response = chain.invoke({"input": "艾米需要4分钟才能爬到滑梯顶部,她花了1分钟才滑下来,水滑梯将在15分钟后关闭,请问在关闭之前她能滑多少次?"})
print(response.content)
参考资料