LangChain 架构
具体而言,该框架由以下开源库组成:
- langchain-core:基本抽象和 LangChain 表达式语言。
- langchain-community:第三方集成。
合作伙伴包(例如 langchain-openai,langchain-anthropic 等):某些集成已进一步拆分为仅依赖于 langchain-core 的轻量级包。 - langchain:构成应用程序认知架构的链条、代理和检索策略。
- langgraph(opens in a new tab):通过将步骤建模为图中的边缘和节点,使用LLMs构建强大且有状态的多角色应用程序。
- langserve(opens in a new tab):将 LangChain 链条部署为 REST API。
更广泛的生态系统包括:
- LangSmith:开发人员平台,可让你对LLM应用程序进行调试、测试、评估和监控,并与LangChain无缝集成。
核心概念
应用场景
快速入门
代码
# pip3 install langchain_openai
# python3 deepseek_langchain.py
from langchain_openai.chat_models.base import BaseChatOpenAI
llm = BaseChatOpenAI(
model='qwen-plus',
openai_api_key='自己都key',
openai_api_base='https://dashscope.aliyuncs.com/compatible-mode/v1',
max_tokens=1024
)
response = llm.invoke("Hi!")
print(response.content)
# pip3 install langchain_openai
# python3 deepseek_langchain.py
from langchain_openai.chat_models.base import BaseChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
llm = BaseChatOpenAI(
model='qwen-plus',
openai_api_key='换成自己的key',
openai_api_base='https://dashscope.aliyuncs.com/compatible-mode/v1',
max_tokens=1024
)
# 根据message 生成提示次模版
prompt = ChatPromptTemplate.from_messages([
("system","你是世界级的技术专家"),
("user","{input}"),
])
outPutParser = StrOutputParser()
# 通过langchain的链式调用,生成一个chain
chain = prompt | llm | outPutParser
result = chain.invoke({"input":"帮我写一篇ai技术文章,字数100字以内"})
print(result)
# 这是输出内容
# content='《AI技术:改变世界的力量》\n\nAI正重塑各行业。机器学习算法让计算机自主学习,深度学习模拟人脑处理数据。从智能语音助手便捷生活,到医疗影像诊断辅助疾病检测,再到工业自动化提高效率,AI潜力无限,不断开启新的可能,推动人类社会迈向智能化新时代。'
# additional_kwargs={'refusal': None}
# response_metadata={'token_usage': {'completion_tokens': 68, 'prompt_tokens': 31, 'total_tokens': 99, 'completion_tokens_details': None, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': 0}}, 'model_name': 'qwen-plus', 'system_fingerprint': None, 'finish_reason': 'stop', 'logprobs': None} id='run-df701b3e-6596-4309-af74-5b8fdcc4630a-0' usage_metadata={'input_tokens': 31, 'output_tokens': 68, 'total_tokens': 99, 'input_token_details': {'cache_read': 0}, 'output_token_details': {}}
# 如果chain中添加 outPutParser 输出就只有 content内容