当前位置: 首页 > news >正文

基于langchain的prompt指令代码编写

当然可以。LangChain 是一个用于构建语言模型应用的框架,它支持多种语言模型,并提供了一系列工具和链式结构来构建复杂的语言模型应用。在这个示例中,我们将使用 LangChain 和 Hugging Face 的 Transformers 库来创建一个简单的应用,其中模型可以调用外部函数来执行特定任务。
示例:使用 LangChain 和 Transformers 创建一个可以调用外部函数的聊天机器人
1. 安装必要的库:
•  LangChain (pip install langchain)
•  Hugging Face Transformers (pip install transformers)
•  Hugging Face Accelerate (pip install accelerate)
•  Faiss (pip install faiss-cpu) 用于向量存储和检索
2. 编写代码:
•  我们将创建一个简单的聊天机器人,当用户询问有关天气的问题时,机器人将调用一个外部函数来获取天气信息。
import os
import json
from typing import List, Dict
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
from langchain import PromptTemplate, LLMChain
from langchain.chains import LLMChain
from langchain.callbacks.manager import CallbackManager
from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler
from langchain.prompts import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

# 加载模型
tokenizer = AutoTokenizer.from_pretrained("gpt2")
model = AutoModelForCausalLM.from_pretrained("gpt2")

# 创建一个管道
pipeline = pipeline(
    "text-generation",
    model=model,
    tokenizer=tokenizer,
    max_length=200,
    temperature=0.7,
    top_p=0.95,
    top_k=50,
    repetition_penalty=1.05,
)

# 外部函数定义
def get_weather(city: str) -> str:
    # 这里只是一个示例,实际应用中应该调用真实的天气API
    return f"The weather in {city} is sunny today."

# LangChain 配置
callback_manager = CallbackManager([StreamingStdOutCallbackHandler()])
llm_chain = LLMChain(
    llm=pipeline,
    prompt=ChatPromptTemplate.from_messages([
        SystemMessagePromptTemplate.from_template(
            "You are a helpful assistant that can call external functions. If the user asks about the weather, call the get_weather function."
        ),
        HumanMessagePromptTemplate.from_template("{input}")
    ]),
    callback_manager=callback_manager,
)

# 主函数
def main():
    while True:
        query = input("Enter your query: ")
        if query.lower() == "exit":
            break
        
        # 检查是否询问天气
        if "weather" in query.lower():
            # 调用外部函数
            city = query.split(" ")[-1]  # 假设城市名是查询的最后一部分
            weather_info = get_weather(city)
            print(f"Weather Info: {weather_info}")
        else:
            # 生成回复
            response = llm_chain.run(query)
            print(f"Response: {response}")

if __name__ == "__main__":
    main()

说明:
1. 加载模型:我们使用 gpt2 作为示例模型。你可以根据需要替换为其他的预训练模型。
2. 外部函数:get_weather 函数用于获取指定城市的天气信息。这里我们只是简单地返回了一个固定的字符串,实际应用中应该调用真实的天气API。
3. LangChain 配置:我们创建了一个 LLMChain,它使用了预定义的提示模板。提示模板告诉模型如果用户询问天气,则调用 get_weather 函数。
4. 主函数:在主函数中,我们不断接收用户的输入,并根据输入决定是调用外部函数还是让模型生成回复。
注意事项:
•  这个示例假设用户总是按照特定格式输入查询(例如:“weather New York”)。实际应用中,你可能需要更复杂的逻辑来解析用户输入。
•  为了使模型真正能够调用外部函数,你需要使用支持函数调用的模型,如 Hugging Face 的某些版本的 GPT-3 或 GPT-4。
希望这个示例对你有所帮助!如果有任何疑问或需要进一步的帮助,请随时提问。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 为什么企业跨国组网建议用SD-WAN?
  • 10分钟搞懂,Python接口自动化测试-接口依赖-实战教程
  • keepalived与lvs
  • 每日一问:深入理解C++中的访问控制机制——private、protected和public
  • Unified 阻抗控制 architecture、framework、approach
  • [CLIP-VIT-L + Qwen] 多模态大模型源码阅读 - 视觉模型篇
  • golang(go语言)打包成带图标的 exe 可执行文件
  • WPS宏实现Sheet页拆分功能
  • 小编需复盘,写练习
  • 数采网关面临的安全挑战
  • 保研考研机试攻略:第六章——搜索(2)
  • docker映射了端口,宿主机不生效
  • 鸿蒙内核源码分析(共享内存) | 进程间最快通讯方式
  • SpringBoot集成kafka-获取生产者发送的消息(阻塞式和非阻塞式获取)
  • 1111111111
  • 【译】JS基础算法脚本:字符串结尾
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • C# 免费离线人脸识别 2.0 Demo
  • CentOS 7 修改主机名
  • eclipse的离线汉化
  • java8-模拟hadoop
  • Java比较器对数组,集合排序
  • JDK 6和JDK 7中的substring()方法
  • MobX
  • spring学习第二天
  • SQLServer插入数据
  • Vue.js 移动端适配之 vw 解决方案
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 产品三维模型在线预览
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 使用 Docker 部署 Spring Boot项目
  • 事件委托的小应用
  • 手写双向链表LinkedList的几个常用功能
  • PostgreSQL之连接数修改
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (Note)C++中的继承方式
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET Project Open Day(2011.11.13)
  • .net web项目 调用webService
  • .NET 快速重构概要1
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • @RequestBody与@ModelAttribute
  • @WebService和@WebMethod注解的用法
  • @软考考生,这份软考高分攻略你须知道
  • [ C++ ] STL_vector -- 迭代器失效问题
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [4]CUDA中的向量计算与并行通信模式
  • [Avalon] Avalon中的Conditional Formatting.
  • [AX]AX2012 SSRS报表Drill through action