一、fewshot生成
如果想系统学习,这些看不懂最好按顺序把专栏看完,因为我是循序渐进的,一个代码就一两个知识点,不难。
from dotenv import load_dotenv
load_dotenv()
import os
os.environ['OPENAI_BASE_URL']='https://key.wenwen-ai.com/v1'
os.environ['OPENAI_API_KEY']='sk-QO854BkCudLocaq6D80971609aA742088975174b308990Ec'
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from langchain.prompts import FewShotPromptTemplate
llm = ChatOpenAI(model='gpt-3.5-turbo-1106',temperature=0)
examples = [
{'sence': '秋天', 'type': '五言绝句', 'text': '移舟泊烟渚,日暮客愁新。\n野旷天低树,江清月近人。'},
{'sence': '冬天', 'type': '七言律诗', 'text': '昔人已乘黄鹤去,此地空余黄鹤楼。\n黄鹤一去不复返,白云千载空悠悠。\n晴川历历汉阳树,芳草萋萋鹦鹉洲。\n日暮乡关何处是?烟波江上使人愁。'},
]
example_template='这是一首描写{sence}的诗,格式为{type}:\n{text}'
example_prompt = PromptTemplate(template=example_template,input_variables=['sence','tpye','text'])
print(example_template)
prompt = FewShotPromptTemplate(
examples = examples,
example_prompt=example_prompt,
example_separator='\n\n',
prefix='请分析以下诗歌的格式,并按照格式要求创作诗歌。',
suffix='写一首描写{sence}的诗,格式要求为{type}:\n',
input_variables=['sence','type']
)
print(prompt)
print(prompt.format(sence='秋天',type='七言律诗'))
# 请分析以下诗歌的格式,并按照格式要求创作诗歌。
# 这是一首描写秋天的诗,格式为五言绝句:
# 移舟泊烟渚,日暮客愁新。
# 野旷天低树,江清月近人。
# 这是一首描写冬天的诗,格式为七言律诗:
# 昔人已乘黄鹤去,此地空余黄鹤楼。
# 黄鹤一去不复返,白云千载空悠悠。
# 晴川历历汉阳树,芳草萋萋鹦鹉洲。
# 日暮乡关何处是?烟波江上使人愁。
# 写一首描写秋天的诗,格式要求为七言律诗:
chain = prompt | llm
result = chain.invoke({'sence':'秋天', 'type':'五言绝句'})
print(result)
# content='秋风吹叶落,寂寞满庭秋。\n霜降天地冷,思念难言休。
二、conversationchain
这个链可以自动结合历史的信息进行生成。
import os
os.environ['OPENAI_BASE_URL']=''
os.environ['OPENAI_API_KEY']=''
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model='gpt-3.5-turbo-1106')
# 简单对话场景
from langchain.chains import ConversationChain
conversation = ConversationChain(llm=llm,verbose=True)
print(conversation.prompt.template)
# while True:
# human_input = input('User: ') # hello | 你叫什么名字?
# result = conversation.predict(input=human_input)
# print('Assistant: ', result)
# 修改提示词
from langchain.chains import ConversationChain
from langchain.prompts import PromptTemplate
template = '''
你现在是一位中文助手,用中文回答。下面是一段人类和人工智能之间的友好对话。人工智能是健谈的,并根据其上下文提供许多具体细节。如果人工智能不知道一个问题的答案,它就会如实说它不知道。
当前对话:
{history}
User:{input}
Assistant:
'''
prompt = PromptTemplate.from_template(template)
conversation = ConversationChain(llm=llm, prompt=prompt, verbose=True)
print(conversation.prompt.template)
while True:
human_input = input('User: ') # hello | 你叫什么名字? | 感冒吃什么药好得快?
result = conversation.predict(input=human_input)
print('Assistant: ', result)