LangChain之Models(模型)完整篇

​模型,位于LangChain框架的最底层,它是基于语言模型构建的应用核心元素,因为所谓LangChain应用开发,就是以LangChain作为框架,通过API调用大模型来解决具体问题的过程。

而整个LangChain框架的逻辑都是由LLM这个发动机来驱动的。没有模型,LangChain这个框架也就失去了它存在的意义。
​​
在这里插入图片描述

一、MOdel I/O

我们在使用过程中是可以将模型拆解成三块,分别是输入提示(Format)、调用模型(Predict)、输出解析(Parse)。由于这三块形成一个整体,因此在LangChain中,这个过程被统称为Model I/O(Input/Output)

在这里插入图片描述

在模型I/O的每个环节,LangChain都提供了模板和工具,能快捷地形成调用各种语言模型的接口
在这里插入图片描述

二、提示模板

语言模型就是一个无穷无尽的宝藏,封装了人类的知识和智慧,像一个“魔合”,但怎么才能顺利,便捷解锁其中奥秘,需要我们深研,探索。所以“提示工程”这个词特别流行,所谓Prompt Engineering,就是专门研究对大语言模型的提示构建。

好的提示总能让调用语言模型做到事半功倍

约定了一个原则,不妨先作为工作中的标准,然后在实践加以考究和调整。

1、给予模型清晰明确的提示
2、让模型慢慢地思考

那好吧,下面让我们实践一下:从创建一个简单的LangChain提示模板开始

# 导入LangChain中的提示模板
from langchain.prompts import PromptTemplate
# 创建原始模板
template = """您是一位专业的鲜花店文案撰写员。\n
对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?
"""
# 根据原始模板创建LangChain提示模板
prompt = PromptTemplate.from_template(template)

实际应用可以这样写

input_variables = ['flower_name','price'] #输入的变量
output_parser = None
partial_variables = {
   
   }
# 创建原始模板
template = '/\n 您是一位专业的鲜花店文案撰写员。\n对于售价为 {price} 元的 {flower_name} ,您能提供一个吸引人的简短描述吗?'
template_format = 'f-string'
validate_template = True

该模板就是一段描述某鲜花的文本格式,它是一个f-string,其中有两个变量{cake_name}和{price}表示鲜花的名称和价格,这两个值是模板里面的占位符,在实际使用模板生成提示时会被具体的值替换。

**# 根据原始模板创建LangChain提示模板**
prompt = PromptTemplate.from_template(template)`

在这里插入图片描述

三、语言模型

LangChain中支持的模型有三大类:

1、大语言模型(LLM),也叫Text Model,这些模型将文本字符串作为输入,并返回文本字符串作为输出。Open AI的text-davinci-003,Facebook的LLaMA、ANTHROPIC的Claude,例如:deepseek的例子

import requests
from public import comm

API_URL = "https://api.deepseek.com/v1/chat/completions"
#API_KEY = "your_api_key_here"
API_KEY = comm.api_key
headers = {
   
   
    "Authorization": f"Bearer {
     
     API_KEY}",
    "Content-Type": "application/json"
}

data = {
   
   
    "model": "deepseek-chat",  # 或其他可用模型
    "messages": [
        {
   
   "role": "system", "content": "你是一个有帮助的助手"},
        {
   
   "role": "user", "content": "你好!"}
    ],
    "temperature": 0.7
}

response = requests.post(API_URL, headers=headers, json=data)
print(response.json())

,都是典型的LLM。

2、聊天模型(Chat Mode),主要代表Open AI的ChatGPT系统模型。这些模型通常由语言模型支持,但它们的API更加结构化。具体来说,这些模型将聊天消息列表作为输入,并返回消息。如deepseek的例子:

import requests
from public import comm


DEEPSEEK_API_URL = "https://api.deepseek.com/v1/chat/completions"
#API_KEY = "your_api_key_here"  # 替换为你的实际API密钥
API_KEY = comm.api_key

headers = {
   
   
    "Authorization": f"Bearer {
     
     API_KEY}",
    "Content-Type": "application/json"
}

data = {
   
   
    "model": "deepseek-chat",  # 指定使用DeepSeek Chat模型
    "messages": [
        {
   
   "role": "system", "content": "你是一个有帮助的AI助手"},
        {
   
   "role": "user", "content": "请解释一下机器学习的基本概念"}
    ],
    "temperature": 0.7,  # 控制生成文本的随机性
    "max_tokens": 1024   # 限制生成的最大token数量
}

response = requests.post(DEEPSEEK_API_URL, headers=headers, json=data)
if response.status_code == 200:
    print(response.json()["choices"][0]["message"]["content"])
else:
    print(f"请求失败,状态码: {
     
     response.status_code}")

3、文本嵌入模型(Embedding Model),这些模型将文本作为输入并返回浮点数列表,也就是Embedding。而文本嵌入模型如OpenAI的text-embedding-ada-002,文本嵌入模型负责把文档存入向量数据库,各当前探讨的提示工程关系不大。

再看下面一个例子:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值