【LangChain】Prompts之示例选择器

LangChain学习文档


概要

如果您有大量示例,您可能需要选择要包含在提示中的哪个示例。示例选择器是负责执行此操作的类。

基本接口定义如下:

python 复制代码
class BaseExampleSelector(ABC):
    """用于选择要包含在提示中的示例的界面。"""

    @abstractmethod
    def select_examples(self, input_variables: Dict[str, str]) -> List[dict]:
        """根据输入选择要使用的示例。"""

它需要公开的唯一方法是 select_examples 方法。这需要接受输入变量,然后返回示例列表。如何选择这些示例取决于每个具体的实现。

自定义示例选择器(Custom example selector)

在本教程中,我们将创建一个自定义示例选择器,用于从给定的示例列表中选择每个备用示例。

ExampleSelector 必须实现两个方法:

  1. add_example 方法接受一个示例并将其添加到 ExampleSelector

  2. select_examples 方法,它接受输入变量并返回部分示例列表或全部列表。

让我们实现一个自定义的ExampleSelector,它只随机选择两个示例。

这里查看 LangChain 支持的当前示例选择器实现集。

实现自定义示例选择器(Implement custom example selector)

python 复制代码
from langchain.prompts.example_selector.base import BaseExampleSelector
from typing import Dict, List
import numpy as np


class CustomExampleSelector(BaseExampleSelector):
    
    def __init__(self, examples: List[Dict[str, str]]):
        self.examples = examples
    
    def add_example(self, example: Dict[str, str]) -> None:
        """添加新示例来存储密钥。"""
        self.examples.append(example)

    def select_examples(self, input_variables: Dict[str, str]) -> List[dict]:
        """根据输入选择要使用的示例。随机选择2个"""
        return np.random.choice(self.examples, size=2, replace=False)

参考api:BaseExampleSelector from langchain.prompts.example_selector.base

使用自定义示例选择器(Use custom example selector)

python 复制代码
examples = [
    {"foo": "1"},
    {"foo": "2"},
    {"foo": "3"}
]

# 初始化示例选择器。
example_selector = CustomExampleSelector(examples)


# 选择示例
example_selector.select_examples({"foo": "foo"})
# -> array([{'foo': '2'}, {'foo': '3'}], dtype=object)

# 将新示例添加到示例集中
example_selector.add_example({"foo": "4"})
example_selector.examples
# -> [{'foo': '1'}, {'foo': '2'}, {'foo': '3'}, {'foo': '4'}]

# 选择示例
example_selector.select_examples({"foo": "foo"})
# -> array([{'foo': '1'}, {'foo': '4'}], dtype=object)

总结

本文讲解的是示例选择器。就当我们有多个示例时,可以帮助我们选择哪个示例!

套路,就两个主要步骤:

  1. add_example方法,它接受一个示例并将其添加到该ExampleSelector中。
  2. select_examples方法,它接受输入变量并返回部分示例列表或全部列表。

参考地址:

https://python.langchain.com/docs/modules/model_io/prompts/example_selectors/custom_example_selector

相关推荐
vibag7 小时前
RAG项目实践
python·语言模型·langchain·大模型
薛定谔的猫19821 天前
Langchain(四)文本嵌入模型(Embedding Model)
langchain·embedding
喜欢猪猪1 天前
深度解析 SGLang:大模型编程新范式——从 Prompt Engineering 到 Structured Generation 的系统性跃迁
java·数据库·prompt
赵长辉1 天前
AGI学习:langchain第一课,提示词模版、大模型、输出解析器,链,部署【2025.10.20的课程复习笔记】
学习·langchain·agi
vibag1 天前
RAG文本处理
python·语言模型·langchain·大模型
vibag1 天前
MCP实践
python·语言模型·langchain·大模型
用户377833043491 天前
( 教学 )Agent 构建 Memory(提示词对话存储)3. ConversationTokenBufferMemory(根据“令牌长度”刷新对话内容, 版
langchain·agent
安娜的信息安全说1 天前
AI安全新战场:Prompt安全的未来趋势与挑战
人工智能·安全·prompt
我命由我123451 天前
LangChain 学习 - Langchain Model IO(环境安装、大模型应用开发、模型分类、模型消息)
人工智能·python·ai·语言模型·pycharm·langchain·python3.11
paopao_wu1 天前
LangChainV1.0[03]-语义检索:PDF放入向量数据库
人工智能·python·langchain·pdf