技术背景介绍
随着查询分析的复杂度增加,语言模型(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在复杂查询中的表现。这在需要多层次查询的场景中尤其重要,例如视频教程分析、技术文档搜索等。
实践建议
- 重点示例选择:选择与实际应用场景最相似的示例。
- 持续优化:根据模型的表现,持续添加和优化示例。
- 监控与追踪:使用工具如LangSmith来监控模型输出,帮助调试和优化。
结束语:如果遇到问题欢迎在评论区交流。
—END—
277

被折叠的 条评论
为什么被折叠?



