You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain动态少样本代码调试:解决‘examples未定义’错误

LangChain动态少样本代码报错:name 'examples' is not defined 解决方法

问题描述

运行以下LangChain动态少样本代码时,提示错误name 'examples' is not defined:

# Import necessary modules and classes from langchain_community and langchain_core
from langchain_community.vectorstores import Chroma
from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_openai import OpenAIEmbeddings   ## paid
from langchain.embeddings import HuggingFaceEmbeddings   #free


## setup vector db
# Create an instance of Chroma vector store
vectorstore = Chroma()

# Delete any existing collection in the vector store
# vectorstore.delete_collection()

# Create a SemanticSimilarityExampleSelector instance using examples, OpenAI embeddings, and the vector store
example_selector = SemanticSimilarityExampleSelector.from_examples(
    examples,  # List of example queries and inputs
    HuggingFaceEmbeddings(), #HuggingFaceEmbeddings() OpenAIEmbeddings() # OpenAI Embeddings for generating vector representations
    vectorstore,  # Chroma vector store for storing and querying vector representations
    k=2,  # Number of similar examples to retrieve
    input_keys=["input"],  # Define the input keys to consider for semantic similarity
)

错误原因

代码中SemanticSimilarityExampleSelector.from_examples()方法的第一个参数examples未定义。该参数要求传入一个包含样本数据的列表,每个样本为字典结构,必须包含input_keys指定的键(此处为input),通常还需包含对应输出内容。

解决方法

在调用from_examples()前,先定义符合格式要求的examples变量。以下是修正后的完整代码:

# Import necessary modules and classes from langchain_community and langchain_core
from langchain_community.vectorstores import Chroma
from langchain_core.example_selectors import SemanticSimilarityExampleSelector
from langchain_openai import OpenAIEmbeddings   ## paid
from langchain.embeddings import HuggingFaceEmbeddings   #free

# 定义样本数据,每个样本需包含input键,可按需添加其他字段(如output)
examples = [
    {"input": "如何优化Python代码运行速度?", "output": "可以通过使用内置函数、减少循环嵌套、利用多进程/多线程、使用NumPy等库优化数值计算等方式提升速度。"},
    {"input": "Python中列表和元组的区别是什么?", "output": "列表是可变的(可修改元素),使用[]定义;元组是不可变的,使用()定义,性能略优于列表。"},
    {"input": "如何在Python中读取CSV文件?", "output": "可以使用csv模块、pandas库的read_csv方法,或者直接用open函数逐行读取解析。"},
    {"input": "Python装饰器的作用是什么?", "output": "装饰器可以在不修改原函数代码的前提下,为函数添加额外功能,比如日志记录、性能统计、权限校验等。"}
]

## setup vector db
# Create an instance of Chroma vector store
vectorstore = Chroma()

# Delete any existing collection in the vector store
# vectorstore.delete_collection()

# Create a SemanticSimilarityExampleSelector instance using examples, OpenAI embeddings, and the vector store
example_selector = SemanticSimilarityExampleSelector.from_examples(
    examples,  # List of example queries and inputs
    HuggingFaceEmbeddings(), #HuggingFaceEmbeddings() OpenAIEmbeddings() # OpenAI Embeddings for generating vector representations
    vectorstore,  # Chroma vector store for storing and querying vector representations
    k=2,  # Number of similar examples to retrieve
    input_keys=["input"],  # Define the input keys to consider for semantic similarity
)

# 测试示例选择器
test_input = "Python怎么优化性能?"
selected_examples = example_selector.select_examples({"input": test_input})
print("选中的相似样本:")
for idx, example in enumerate(selected_examples):
    print(f"{idx+1}. 输入:{example['input']}\n   输出:{example['output']}\n")

说明

  • examples列表中的每个字典必须包含input键,对应input_keys参数指定的字段,这样示例选择器才能基于该字段的语义相似度检索样本。
  • 可根据实际业务场景替换示例数据,比如问答、文本分类、实体识别等任务的样本。

内容的提问来源于stack exchange,提问作者Tahir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:26:03