LangChain学习文档
- 【LangChain】向量存储(Vector stores)
- 【LangChain】向量存储之FAISS
- 【LangChain】Prompts之Prompt templates
- 【LangChain】Prompts之自定义提示模板
- 【LangChain】Prompts之示例选择器
概要
如果您有大量示例,您可能需要选择要包含在提示中的哪个示例。示例选择器是负责执行此操作的类。
基本接口定义如下:
class BaseExampleSelector(ABC):
"""用于选择要包含在提示中的示例的界面。"""
@abstractmethod
def select_examples(self, input_variables: Dict[str, str]) -> List[dict]:
"""根据输入选择要使用的示例。"""
它需要公开的唯一方法是 select_examples
方法。这需要接受输入变量,然后返回示例列表。如何选择这些示例取决于每个具体的实现。
自定义示例选择器(Custom example selector)
在本教程中,我们将创建一个自定义示例选择器,用于从给定的示例列表中选择每个备用示例。
ExampleSelector
必须实现两个方法:
-
add_example
方法接受一个示例并将其添加到ExampleSelector
中 -
select_examples
方法,它接受输入变量并返回部分示例列表或全部列表。
让我们实现一个自定义的ExampleSelector
,它只随机选择两个示例。
在这里查看 LangChain 支持的当前示例选择器实现集。
实现自定义示例选择器(Implement custom example selector)
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)
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)
总结
本文讲解的是示例选择器。就当我们有多个示例时,可以帮助我们选择哪个示例!
套路,就两个主要步骤:
add_example
方法,它接受一个示例并将其添加到该ExampleSelector中。select_examples
方法,它接受输入变量并返回部分示例列表或全部列表。
参考地址:
https://python.langchain.com/docs/modules/model_io/prompts/example_selectors/custom_example_selector