LangChain与大型语言模型(LLMs)应用基础教程:角色定义

这篇具有很好参考价值的文章主要介绍了LangChain与大型语言模型(LLMs)应用基础教程:角色定义。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

如果您还没有看过我之前写的两篇博客,请先看一下,这样有助于对本文的理解:

LangChain与大型语言模型(LLMs)应用基础教程:Prompt模板

LangChain与大型语言模型(LLMs)应用基础教程:信息抽取

LangChain是大型语言模型(LLM)的应用框架,LangChain可以直接与 OpenAI 的 text-davinci-003、gpt-3.5-turbo 模型以及 Hugging Face 的各种开源语言模如 Google 的 flan-t5等模型集成。通过使用LangChain可以开发出更为强大和高效的LLM的各种应用。

在ChatGPT中角色定义

在和让大型语言模型(LLM)如ChatGPT等对话时,为了要让LLM能准确回答我们的问题,我们应该在对话之前给LLM设定一个角色,这样当LLM知道自己的角色定位以后,它的回答将会符合自己的角色,而不会天马行空,自由发挥。下面我们看一下如何用python直接调用openai的语言模型"gpt-3.5-turbo"时设定角色,首先我们看看openai官网上对调用"gpt-3.5-turbo"模型时的参数结构的描述,其中messages参数中角色包含了“system”,“user”,“assistand” 这三种角色:

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 这里的system是指ChatGPT机器人的系统角色也就是机器人在聊天之前的自身定位,而 user,和assistant则是用户和机器人在聊天时区分彼此的角色。下面我们看看使用python在编写与ChatGPT聊天程时如何定义角色

安装所需要的python包:

pip -q install openai langchain

 下面我们首先给ChatGPT的语言模型“gpt-3.5-turbo” 定义一个系统角色为:You are a helpful assistant(你是一个乐于助人的助手),这样ChatGPT在回答问题时的风格和倾向都必须符合自己这个系统角色。

import os
import openai

#您申请的openai的api_key
openai.api_key = 'XXXXXXXX'

response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Hello what can you do for me?"},
    ]
)

response 

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 这是ChatGPT返回的消息的数据结构,下面我们把我们所需要的内容提取出来:

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 这里我们把ChatGPT的角色设定为:You are a helpful assistant(你是一个乐于助人的助手),helpful assistant 是一个比较正面的角色,那我们是否可以更改一下角色,给机器人增加一个负面角色呢?比如让机器人成为一个爱说大话,谎话连篇的吹牛大王呢?我们可以尝试一下:

response = openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "你是一个爱吹牛说大话,谎话连篇的助理,名叫吹牛大王"},
        {"role": "user", "content": "你会吹牛吗?"},
    ]
)

print(response.choices[0].message.content)

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 接下来我们来进行一场连续的对话,并记录每次对话所用的token数量,最后统计一下总的tokens数量。

#定义系统角色
messages=[{"role": "system", "content": "你是一个爱吹牛说大话,谎话连篇的助理,名叫吹牛大王"}]

conversation_total_tokens = 0
while True:
    message = input("你: ")
    if message=='exit':
        print(f"在本轮对话中一共使用了{conversation_total_tokens} 个 tokens")
        break
    if message:
        messages.append(
            {"role": "user", "content": message},
        )
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo", messages=messages
        )
    
    reply = response.choices[0].message.content
    total_tokens = response.usage['total_tokens']
    conversation_total_tokens += total_tokens
    print(f"ChatGPT: {reply} \n (本次对话一共使用了{total_tokens}个token)\n")
    messages.append({"role": "assistant", "content": reply})

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 通过上述对话,我们发现,通过给ChatGPT进行系统角色定位,似乎可以改变ChatGPT在聊天时候的倾向性,但是能多大程度的改变ChatGPT聊天的倾向性或者立场,还有待观察。

 在LangChain中定义角色

下面我们看看如何让LangChain在集成大型语言模型(LLM)时定义角色。

from langchain import PromptTemplate, LLMChain
from langchain.prompts import PromptTemplate
from langchain.llms import OpenAIChat
import os
#您申请的openai的api_key
os.environ['OPENAI_API_KEY'] = 'XXXXXXXX'

#定义系统角色
prefix_messages = [{"role": "system", "content": "你是一位乐于助人的历史学教授,名叫王老师"}]

# 定义大型语言模型llm
llm = OpenAIChat(model_name='gpt-3.5-turbo', 
             temperature=0, 
             prefix_messages=prefix_messages,
             max_tokens = 256)

这里我们给llm定义的角色为:一个乐于助人的历史学教授,名叫王老师。接下来我们定义一个prompt模板,我们希望 王老师能够用生动有趣,简明扼要的方式回答问题。

template = """根据问题: {user_input}

请用生动有趣,简明扼要的方式回答上述问题。"""

prompt = PromptTemplate(template=template,input_variables=["user_input"])

最后我们要定义chain,chain的作用是将llm实例化,并套用预先定义的prompt模板

#定义chain
llm_chain = LLMChain(prompt=prompt, llm=llm)

user_input = "中国一共有哪些朝代?"

print(llm_chain.run(user_input))

LangChain与大型语言模型(LLMs)应用基础教程:角色定义

llm_chain.run("唐朝有哪几位皇帝?")

 LangChain与大型语言模型(LLMs)应用基础教程:角色定义

 从上述llm的回答看来,llm清楚了解自己的角色定位,所以它说回答的内容或者风格都似乎和自己角色相符合,这似乎说明角色定位能在某种程度上改变llm回答问题的倾向和立场。

总结

今天我们学习了,如何给openai的语言模型以及在Langchain中对llm进行角色定位,并且通过实验发现角色定位似乎在某种程度上可以改变llm在回答问题时候的倾向和立场,不过这还有待进一步实验验证。文章来源地址https://www.toymoban.com/news/detail-427641.html

到了这里,关于LangChain与大型语言模型(LLMs)应用基础教程:角色定义的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理从入门到应用——LangChain:模型(Models)-[大型语言模型(LLMs):缓存LLM的调用结果]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月16日
    浏览(49)
  • LangChain:大型语言模型(LLMs)-- ChatGLM

    1. 介绍 LangChain 是一个领先的框架,用于构建由大型语言模型(LLM)驱动的应用程序。在这个框架内,ChatGLM 作为一个重要的组件,为用户提供了强大的双语(中文-英文)对话功能。ChatGLM 基于通用的语言模型(GLM)框架,拥有数十亿级别的参数,确保了其对话的流畅性和准确

    2024年04月09日
    浏览(46)
  • 使用langchain打造自己的大型语言模型(LLMs)

    我们知道Openai的聊天机器人可以回答用户提出的绝大多数问题,它几乎无所不知,无所不能,但是由于有机器人所学习到的是截止到2021年9月以前的知识,所以当用户询问机器人关于2021年9月以后发送的事情时,它无法给出正确的答案,另外用户向机器人提问的字符串(prompt)长度

    2024年02月02日
    浏览(48)
  • LangChain大型语言模型(LLM)应用开发(五):评估

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月15日
    浏览(45)
  • LangChain大型语言模型(LLM)应用开发(三):Chains

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月12日
    浏览(43)
  • LangChain大型语言模型(LLM)应用开发(六):Agents

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(40)
  • LangChain大型语言模型(LLM)应用开发(四):Q&A over Documents

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(46)
  • LangChain大型语言模型(LLM)应用开发(一):Models, Prompts and Output Parsers

    LangChain是一个基于大语言模型(如ChatGPT)用于构建端到端语言模型应用的 Python 框架。它提供了一套工具、组件和接口,可简化创建由大型语言模型 (LLM) 和聊天模型提供支持的应用程序的过程。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,以便在不同的

    2024年02月16日
    浏览(41)
  • Generative AI 新世界 | 大型语言模型(LLMs)概述

    在上一篇《Generative AI 新世界:文本生成领域论文解读》中,我带领大家一起梳理了文本生成领域(Text Generation)的主要几篇论文:InstructGPT,RLHF,PPO,GPT-3,以及 GPT-4。本期文章我将帮助大家一起梳理另一个目前炙手可热的话题: 大型语言模型 (Large Language Models,或简写为

    2024年02月07日
    浏览(45)
  • 照片相似性搜索引擎Embed-Photos;赋予大型语言模型(LLMs)视频和音频理解能力;OOTDiffusion的基础上可控制的服装驱动图像合成

    ✨ 1: Magic Clothing Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上 Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上。通过使用Magic Clothing,可以在不同的场景下达到根据服装设计或者需求

    2024年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包