自定义链(Custom Chain)是指你可以根据自己的业务需求,继承 LangChain 的 Chain 基类,编写任意输入输出逻辑,实现完全自定义的推理流程。适用于标准链(如 LLMChain、SequentialChain 等)无法满足的复杂场景。
典型用法举例
假设你要实现一个"百度百科文章生成器",输入主题,输出百科风格的长文:
python
from typing import List, Dict, Any, Optional
from langchain.callbacks.manager import CallbackManagerForChainRun
from langchain.chains.base import Chain
from langchain.prompts.base import BasePromptTemplate
from langchain.base_language import BaseLanguageModel
from langchain_openai import ChatOpenAI
from langchain.prompts import PromptTemplate
from pydantic import SecretStr
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
class baidu_article_chain(Chain):
"""开发一个百度文章生成器"""
prompt: BasePromptTemplate # Prompt模板
llm: BaseLanguageModel # LLM模型
out_key: str = "text" # 输出的key
@property
def input_keys(self) -> List[str]:
"""返回Prompt所需的所有输入变量名"""
return self.prompt.input_variables
@property
def output_keys(self) -> List[str]:
"""始终返回text键作为输出"""
return [self.out_key]
def _call(
self,
inputs: Dict[str, Any],
run_manager: Optional[CallbackManagerForChainRun] = None,
) -> Dict[str, Any]:
"""运行链,生成百度百科文章"""
# 格式化prompt
prompt_value = self.prompt.format_prompt(**inputs)
# 调用LLM生成内容
response = self.llm.generate_prompt(
[prompt_value],
callbacks=run_manager.get_child() if run_manager else None
)
# 如果有回调,记录文本
if run_manager:
run_manager.on_text("baidu article is written")
# 返回生成的文本
return {self.out_key: response.generations[0][0].text}
@property
def _chain_type(self) -> str:
"""返回链的类型标识"""
return "baidu_article_chain"
# 实例化自定义链,使用PromptTemplate和腾讯混元模型
chain = baidu_article_chain(
prompt=PromptTemplate(
template="在百度百科上写一篇关于{topic}的文章",
input_variables=["topic"]
),
llm=ChatOpenAI(
api_key=SecretStr(os.environ.get("HUNYUAN_API_KEY", "")), # 腾讯混元API KEY
base_url="https://api.hunyuan.cloud.tencent.com/v1", # 腾讯混元API地址
model="hunyuan-lite", # 模型名称
temperature=0, # 采样温度
)
)
# 运行链,生成关于"人工智能"的百度百科文章
result = chain.run({"topic": "人工智能"})
print(result)
结果:
bash
标题:人工智能:探索未来科技的新篇章
摘要:
人工智能(AI)是计算机科学的一个分支,旨在让机器模拟人类智能。本文将介绍人工智能的定义、历史、应用领域以及未来的发展趋势。
一、人工智能的定义
人工智能是指由计算机系统实现的具有类人智能的技术,包括学习、推理、感知、理解自然语言、识别图像、语音和模式等功能。
二、人工智能的历史
人工智能的概念最早可以追溯到20世纪50年代,当时的研究主要集中在通过规则和逻辑推理来实现人工智能。随着计算机技术的发展,尤其是深度学习和大数据的出现,人工智能已经取得了显著的进步。
三、人工智能的应用领域
人工智能已经广泛应用于各个领域,如自动驾驶汽车、智能家居、医疗诊断、金融分析、教育等。
四、人工智能的未来发展趋势
随着技术的不断进步,人工智能将在更多领域发挥重要作用,同时也会面临一些挑战,如数据隐私、伦理道德等问题。
总结:
人工智能是21世纪最具潜力的技术之一,它正在改变我们的生活和工作方式。尽管面临一些挑战,但人工智能的未来发展前景仍然充满希望。
关键点说明
- 继承 Chain,实现 _call 方法,定义输入输出逻辑。
- input_keys 和 output_keys 决定链的输入输出变量名。
- 可以组合 LLM、检索、API 调用、任意 Python 逻辑,极其灵活。
- 适合复杂业务流程、特殊格式输出、多步推理等高级场景。
自定义链让你可以完全掌控推理流程,实现任何标准链无法覆盖的复杂业务逻辑,是 LangChain 高级开发的核心能力。