如何为查询分析添加示例以优化LangChain视频查询分析器

技术背景介绍

随着查询分析的复杂度增加,语言模型(LLM)可能在某些场景中难以理解如何准确地响应。在这种情况下,我们可以在提示中添加示例,来指导LLM优化其性能。本文将详细介绍如何为我们在快速入门中构建的LangChain YouTube视频查询分析器添加示例。

核心原理解析

在提示中添加示例的目的是为LLM提供更清晰的参考,以帮助其更好地理解和分解复杂的查询。这些示例可以包含输入问题以及理想的输出格式,从而增加模型生成准确查询的概率。

代码实现演示

下面我们将逐步实现这一功能:

安装依赖

# 请确保安装最新的langchain-core和langchain-openai
%pip install -qU langchain-core langchain-openai

设置环境变量

为了使用OpenAI API,我们需要设置API密钥:

import getpass
import os

os.environ["OPENAI_API_KEY"] = getpass.getpass("Enter your OpenAI API key: ")

可选步骤:启用LangSmith跟踪以获取更多模型内部信息。

定义查询模式

我们将在查询模式中添加一个sub_queries字段,以包含从顶层问题派生的更具体的问题。

from typing import List, Optional
from langchain_core.pydantic_v1 import BaseModel, Field

class Search(BaseModel):
    query: str = Field(..., description="Primary similarity search query applied to video transcripts.")
    sub_queries: List[str] = Field(default_factory=list, description="A list of more narrow sub-questions derived from the main question.")
    publish_year: Optional[int] = Field(None, description="Year video was published")

查询生成

使用LangChain组件来设置查询分析器和添加示例:

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

system = """You are an expert at converting user questions into database queries..."""

prompt = ChatPromptTemplate.from_messages([
    ("system", system),
    ("human", "{question}"),
])

llm = ChatOpenAI(model="gpt-3.5-turbo-0125", temperature=0)
structured_llm = llm.with_structured_output(Search)

# 在设置提示时加入示例
examples = [
    {"input": "What's chat langchain, is it a langchain template?", "tool_calls": [Search(query="What is chat langchain and is it a langchain template?", sub_queries=["What is chat langchain", "What is a langchain template"])]},
    # 添加更多示例...
]

query_analyzer_with_examples = {
    "question": RunnablePassthrough()
} | prompt.partial(examples=[...]) | structured_llm

使用示例进行查询分析

测试新的查询分析器:

result = query_analyzer_with_examples.invoke("what's the difference between web voyager and reflection agents? do both use langgraph?")
print(result)

应用场景分析

通过在提示中添加示例,可以显著提高LLM在复杂查询中的表现。这在需要多层次查询的场景中尤其重要,例如视频教程分析、技术文档搜索等。

实践建议

  1. 重点示例选择:选择与实际应用场景最相似的示例。
  2. 持续优化:根据模型的表现,持续添加和优化示例。
  3. 监控与追踪:使用工具如LangSmith来监控模型输出,帮助调试和优化。

结束语:如果遇到问题欢迎在评论区交流。
—END—

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值