Langchain 的 Custom example selector

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

0. ExampleSelector

ExampleSelector 必须实现两个方法:

  1. 一个 add_example 方法,它接受一个示例并将其添加到ExampleSelector中
  2. 一个 select_examples 方法,它接受输入变量(这意味着用户输入)并返回在少数样本提示中使用的示例列表。

1. 实现自定义示例选择器​

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

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

示例代码,

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:
        """Add new example to store for a key."""
        self.examples.append(example)

    def select_examples(self, input_variables: Dict[str, str]) -> List[dict]:
        """Select which examples to use based on the inputs."""
        return np.random.choice(self.examples, size=2, replace=False)

2. 使用自定义示例选择器​

示例代码及输出结果,

examples = [
    {"foo": "1"},
    {"foo": "2"},
    {"foo": "3"}
]

# Initialize example selector.
example_selector = CustomExampleSelector(examples)


# Select examples
example_selector.select_examples({"foo": "foo"})
# -> array([{'foo': '2'}, {'foo': '3'}], dtype=object)

# Add new example to the set of examples
example_selector.add_example({"foo": "4"})
example_selector.examples
# -> [{'foo': '1'}, {'foo': '2'}, {'foo': '3'}, {'foo': '4'}]

# Select examples
example_selector.select_examples({"foo": "foo"})
# -> array([{'foo': '1'}, {'foo': '4'}], dtype=object)

完结!

猜你喜欢

转载自blog.csdn.net/engchina/article/details/131873344