langchain 入门指南 - In-context Learning

本文涉及的产品
阿里云百炼推荐规格 ADB PostgreSQL,4核16GB 100GB 1个月
简介: langchain 入门指南 - In-context Learning

In-context Learning 是一种上下文学习,在 LLM 出现之后,这种学习方式变得更加实用。

因为 LLM 是训练好的模型,并不了解我们当前需要解决的问题背景是什么,但是 LLM 本身具有很强的分析推理能力,

在这种情况下,我们只需要将我们的问题和上下文传递给 LLM,它就可以帮我们进行分析推理,从而得到答案。

对于大语言模型而言,我们可以通过在输入的 Prompt 中给出关于解决问题方式的描述或者示例,而不需要利用大量数据对模型进行训练。

In-context Learning 包括了 Zero-shot LearningFew-shot Learning 两种方式。

Zero-shot Learning

一种机器学习方法,它允许模型在没有见过任何训练样本的情况下,对新类别的数据进行分类或识别。

这种方法通常依赖于模型在训练过程中学到的知识,以及对新类别的一些描述性信息,如属性或元数据。

意图识别

from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0.3,
    api_key='your key',
    base_url="https://api.openai-hk.com/v1"
)
def recognize_intent(text: str):
    response = llm.invoke([
        SystemMessage("""Recognize the intent from the user's input and format output as JSON string.
        The output JSON string includes: "intention", "parameters" """),
        HumanMessage(text)
    ])
    return response.content
print(recognize_intent("订8月19日北京到上海的飞机"))

输出:

{
  "intention": "flight_booking",
  "parameters": {
    "departure_date": "8月19日",
    "departure_city": "北京",
    "destination_city": "上海"
  }
}

情感分类

from langchain_core.messages import SystemMessage, HumanMessage
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0.3,
    api_key='your key',
    base_url="https://api.openai-hk.com/v1"
)
def classify_sentiment(text: str):
    response = llm.invoke([
        SystemMessage("""根据给定文字所表述的情感,将文字分为三类:正面,中立,负面。请将用户给定的文字进行分类,并输出分类。"""),
        HumanMessage(text)
    ])
    return response.content
print(classify_sentiment("通过前面的课程我对大模型的认识提高了很多。"))
print(classify_sentiment("今天是2024年7月17日"))
print(classify_sentiment("最近感觉很累"))

输出:

正面
中立
负面

Few-shot Learning

教导模型使用非常有限的训练数据来识别新的对象、类或任务。

在这里是通过在 Prompt 里加入少量示例,来实现模型学习。

示例的作用有时可以超过千言万语,Few-shot Learning 通常可以帮助我们描述更复杂的模式。

from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
    model_name="gpt-3.5-turbo",
    temperature=0.3,
    api_key='your key',
    base_url="https://api.openai-hk.com/v1"
)
def book_flight(text: str):
    messages = [
        {"role": "system", "content": """
                通过用户描述,提取航班信息并以 JSON 格式输出。
                以下是一些示例:
                示例1
                输入:“订8月9日上海到北京的航班,上午出发
                输出:"{"date":"0809","dispatch_time":"6-12","from":"上海","to":"北京"}"
                示例2
                输入:“订8月9日上海到北京的航班,下午出发
                输出:"{"date":"0809","dispatch_time":"12-18","from":"上海","to":"北京"}"
                示例3
                输入:“订8月9日上海到北京的航班,晚上出发
                输出:"{"date":"0809","dispatch_time":"21-18","from":"上海","to":"北京"}"
                示例4
                输入:“订8月9日上海到北京的航班
                输出:"{"date":"0809","dispatch_time":"unknown","from":"上海","to":"北京"}"
                ”"""},
        {"role": "user", "content": text}
    ]
    response = llm.invoke(messages)
    return response.content
print(book_flight("预定9月1日广州到北京的航班,下午出发。"))
print(book_flight("预定9月1日广州到北京的航班"))
print(book_flight("预定9月1日夜里广州到北京的航班"))
print(book_flight("预定广州到北京的航班"))

输出:

{"date":"0901","dispatch_time":"12-18","from":"广州","to":"北京"}
{"date":"0901","dispatch_time":"unknown","from":"广州","to":"北京"}
{"date":"0901","dispatch_time":"21-6","from":"广州","to":"北京"}
{"date":"unknown","dispatch_time":"unknown","from":"广州","to":"北京"}

总结

  1. 应用大语言模型要从传统机器学习思维切换为上下文学习的思路。
  2. 上下文学习包括 Zero-shot LearningFew-shot Learning,两者并无明显界限,可以根据实际需要灵活运用。


相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
30天前
|
前端开发 机器人 API
前端大模型入门(一):用 js+langchain 构建基于 LLM 的应用
本文介绍了大语言模型(LLM)的HTTP API流式调用机制及其在前端的实现方法。通过流式调用,服务器可以逐步发送生成的文本内容,前端则实时处理并展示这些数据块,从而提升用户体验和实时性。文章详细讲解了如何使用`fetch`发起流式请求、处理响应流数据、逐步更新界面、处理中断和错误,以及优化用户交互。流式调用特别适用于聊天机器人、搜索建议等应用场景,能够显著减少用户的等待时间,增强交互性。
232 2
|
3月前
langchain 入门指南 - 使用 Agent
langchain 入门指南 - 使用 Agent
151 0
|
3月前
|
安全 API 数据库
langchain 入门指南 - 函数调用
langchain 入门指南 - 函数调用
119 1
|
3月前
langchain 入门指南 - 链式请求
langchain 入门指南 - 链式请求
72 0
|
30天前
|
人工智能 前端开发 JavaScript
前端大模型入门(二):掌握langchain的核心Runnable接口
Langchain.js 是 Langchain 框架的 JavaScript 版本,专为前端和后端 JavaScript 环境设计。最新 v0.3 版本引入了强大的 Runnable 接口,支持灵活的执行方式和异步操作,方便与不同模型和逻辑集成。本文将详细介绍 Runnable 接口,并通过实现自定义 Runnable 来帮助前端人员快速上手。
|
3月前
|
存储 机器学习/深度学习 传感器
langchain 入门指南 - 实现一个多模态 chatbot
langchain 入门指南 - 实现一个多模态 chatbot
115 0
|
3月前
|
前端开发 人机交互
langchain 入门指南 - ReAct 模式
langchain 入门指南 - ReAct 模式
90 1
|
3月前
|
存储 人工智能 缓存
langchain 入门指南 - 让 AI 记住你说过的话
langchain 入门指南 - 让 AI 记住你说过的话
117 1
|
3月前
|
人工智能 搜索推荐 API
langchain 入门指南 - 让 AI 从互联网获取信息
langchain 入门指南 - 让 AI 从互联网获取信息
79 1
|
3月前
|
Linux
langchain 入门指南 - 使用提示词模板
langchain 入门指南 - 使用提示词模板
165 1