LangChain Few-shot prompt 用法示例总结

最近有一个工作问题需要花费太多的人工时间,就考虑是否可以用LangChain Prompt进行解决。经过对LangChain 里的几种 prompt 模板对比分析,觉得 Few-shot prompt 最符合需求,然后就着手开始搭建。因为网上对于Few-shot prompt的用法资料不多,或讲解不完整,故此在这里做一下记录;

import os
from langchain import PromptTemplate
from langchain import FewShotPromptTemplate
from langchain.chains import LLMChain
from langchain.chat_models import ChatOpenAI

from configs import openai_key

# 大模型配置初始化
os.environ['OPENAI_API_KEY'] = openai_key['api_key_2']
llm = ChatOpenAI(temperature=0.9, model_name='gpt-3.5-turbo')


def Question_classify():
    """

    :return:
    """
    examples = [
        {
            "question": """下面两个句话描述的是同一个问题吗?\n问题1:单纯疱疹病毒感染的诱因有哪些?\n问题2:单纯疱疹病毒感染的原因是什么?""",
            "answer": "是"
        },
        {
            "question": """下面两个句话描述的是同一个问题吗?\n问题1:指骨骨折需要吃什么药?\n问题2:骨折时需要用哪种药?""",
            "answer": "不是"
        },
        {
            "question": """下面两个句话描述的是同一个问题吗?\n问题1:范可尼贫血影响生育吗?\n问题2:范可尼是否会影响生育能力?""",
            "answer": "不是"
        },
        {
            "question": """下面两个句话描述的是同一个问题吗?\n问题1:霍乱能自己好吗?\n问题2:霍乱是否会自愈?""",
            "answer": "是"
        },
        {
            "question": """下面两个句话描述的是同一个问题吗?\n问题1:霍乱是否会自愈?\n问题2:霍乱能彻底治愈吗?""",
            "answer": "不是"
        },
    ]

    example_template = """Question: {question}\n{answer}"""

    example_prompt = PromptTemplate(
        input_variables=["question", "answer"],
        template=example_template
    )

    prefix = """假设你是一个中国高中语文老师,现在请你对两个问题的描述内容进行语义相似判断,如果它们表达内容含义一样,就判断为同一问题, 并回答'是',反之回答'不是'。\n下面是一些示例:"""
    suffix = """
    Question: {input}
    """

    # print(example_prompt.format(**examples[0]))

    prompt = FewShotPromptTemplate(
        examples=examples,
        example_prompt=example_prompt,
        prefix=prefix,
        suffix="Question: {input}",
        input_variables=["input"]
    )

    input2 = """下面两个句话描述的是同一个问题吗?\n问题1:结节性多动脉炎会不会影响生育?\n问题2:结节性多动脉炎对生育会有什么影响吗?"""
    input3 = """下面两个句话描述的是同一个问题吗?\n问题1:多发性硬化究竟是怎样一种疾病?\n问题2:多发性硬化会有些什么样的表现?"""
    input4 = """下面两个句话描述的是同一个问题吗?\n问题1:乙状结肠癌的发病率高吗?\n问题2:乙状结肠癌的高发人群是哪些?"""
    # print(prompt.format(input=input))
    chain = LLMChain(llm=llm, prompt=prompt)

    return chain



if __name__ == '__main__':
    input5 = """下面两个句话描述的是同一个问题吗?\n问题1:乙状结肠癌的发病率高吗?\n问题2:乙状结肠癌的高发人群是哪些?"""
    chain = Question_classfy()
    print(chain.run(input5))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值