使用 LangChain 框架进行大模型应用开发

索隆程序员

LangChain 是一个用于构建基于语言模型的应用程序的框架。它旨在简化与大型语言模型(如 ChatGPT、LLaMA 等)的交互,并提供一系列工具和组件来帮助开发者快速构建复杂的应用。LangChain 的设计目标是提高开发效率,使得开发者可以更专注于应用逻辑,而不是底层的技术细节。

  • langchain-core:基础抽象和 `表达式语言。

  • langchain-community:第三方集成。

    • 合作伙伴包(例如langchain-openailangchain-anthropic等):某些集成已进一步拆分为自己的轻量级包,这些包仅依赖于langchain-core
  • langchain:构成应用认知架构的链、代理和检索策略。

  • LangGraph:通过将步骤建模为图中的边和节点,构建强大且有状态的多参与者 LLM 应用。与 LangChain无缝集成,但也可以单独使用。

  • LangServe:将LangChain链部署为 REST API

  • LangSmith:一个开发者平台,可让您调试、测试、评估和监控 LLM 应用。

在这里插入图片描述

提示模版

LangChain 的提示词模板(Prompt Template)是用于构建和管理提示词的工具,能够提高与大型语言模型交互的效率。首先需要安装langchain_coze

pip install langchain_coze

PromptTemplate

基本的字符串提示模板,用于生成简单的文本提示。它允许开发者定义一个基本的文本结构,并用输入变量进行格式化。

# 从 langchain_core.prompts 模块导入 PromptTemplate 类
from langchain_core.prompts import PromptTemplate

# 创建一个基本的提示模板
# PromptTemplate 是一个类,用于定义和格式化提示模板
# input_variables 是一个列表,包含模板中的变量名
# template 是一个字符串,定义了提示的格式,其中包含占位符 {name} 和 {age}
template = PromptTemplate(
    input_variables=["name", "age"],  # 定义模板中的变量名
    template="My name is {name} and I am {age} years old."  # 定义提示的格式
)

# 格式化提示
# 使用 format 方法将变量值填入模板中
# name 变量的值是 "Alice",age 变量的值是 30
prompt = template.format(name="Alice", age=30)

# 打印格式化后的提示
# 输出: My name is Alice and I am 30 years old.
print(prompt)

ChatPromptTemplate

用于聊天模型的提示模板,支持多角色消息的组合和管理。适用于需要模拟对话的场景。

# 从 langchain_core.prompts 模块导入 ChatPromptTemplate 类
from langchain_core.prompts import ChatPromptTemplate

# 创建聊天提示模板
# ChatPromptTemplate 是一个类,用于定义和格式化聊天提示模板
# messages 是一个列表,包含多个消息模板
# 每个消息模板都是一个元组,包含消息的角色和内容
template = ChatPromptTemplate([
    ("system", "You are a helpful AI bot. Your name is {name}."),  # 系统消息,包含占位符 {name}
    ("human", "Hello, how are you doing?"),  # 用户消息
    ("ai", "I'm doing well, thanks!"),  # AI 消息
    ("human", "{user_input}"),  # 用户消息,包含占位符 {user_input}
])

# 调用模板并传入参数
# 使用 invoke 方法将变量值填入模板中
# name 变量的值是 "Bob",user_input 变量的值是 "What is your name?"
prompt_value = template.invoke(
    {
        "name": "Bob",
        "user_input": "What is your name?"
    }
)

# 输出结果
# 打印格式化后的消息
print(prompt_value)

FewShotPromptTemplate

包含少量示例的提示模板,帮助模型更好地理解任务。适用于需要示例来引导模型的场景。

# 从 langchain_core.prompts 模块导入 FewShotPromptTemplate 和 PromptTemplate 类
from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate

# 定义示例提示
# PromptTemplate 是一个类,用于定义和格式化提示模板
# template 参数是一个字符串,定义了提示的格式,其中包含占位符 {animal} 和 {characteristic}
# input_variables 参数是一个列表,包含模板中的变量名
example_prompt = PromptTemplate(
    template="The {animal} is known for its {characteristic}.",
    input_variables=["animal", "characteristic"]
)

# 创建 FewShotPromptTemplate
# FewShotPromptTemplate 是一个类,用于定义和格式化少样本提示模板
# example_prompt 参数是一个 PromptTemplate 对象,定义了示例提示的格式
# examples 参数是一个列表,包含多个示例,每个示例是一个字典,包含变量名和值
# prefix 参数是一个字符串,定义了提示的前缀
# suffix 参数是一个字符串,定义了提示的后缀
# example_separator 参数是一个字符串,定义了示例之间的分隔符
few_shot_template = FewShotPromptTemplate(
    example_prompt=example_prompt,
    examples=[
        {"animal": "dog", "characteristic": "loyalty"},
        {"animal": "cat", "characteristic": "independence"},
        {"animal": "elephant", "characteristic": "intelligence"},
    ],
    prefix="Here are some facts about animals:",
    suffix="Based on the examples above, what can you tell me about a rabbit?",
    example_separator="\n\n"
)

# 使用格式化方法生成提示
# 使用 format 方法将变量值填入模板中
# animal 变量的值是 "rabbit",characteristic 变量的值是 "playfulness"
formatted_prompt = few_shot_template.format(animal="rabbit", characteristic="playfulness")

# 打印格式化后的提示
print(formatted_prompt)

调用模型

Langchain支持的国内模型包括月之暗面科技的moonshot系列、百川智能的baichuan系列、阿里云的通义千问、智谱AI的glm-4以及讯飞星火3.0等。首先要下载langchain_community

pip install langchain_community

智谱

目前glm-4-flash是免费的,可以使用glm-4-flash进行学习。

# 导入必要的模块和类
from langchain_community.chat_models import ChatZhipuAI
from langchain_core.prompts import PromptTemplate
import os

# 获取智谱AI的API密钥
# 从环境变量中获取智谱AI的API密钥
api_key = os.environ.get("ZHIPUAI_API_KEY")
# print(api_key)  # 可以打印API密钥进行调试,但在生产环境中不建议打印敏感信息

# 创建ChatZhipuAI模型
# 使用智谱AI的GLM模型,并传入API密钥、模型名称、温度和最大令牌数
model = ChatZhipuAI(api_key=api_key, model="glm-4-flash", temperature=0.7, max_tokens=1024)

# 创建PromptTemplate模板
# 定义提示模板,包含占位符 {text}
template = "请用英语翻译以下句子:{text}"
# 创建PromptTemplate对象,传入模板和输入变量
prompt_template = PromptTemplate(template=template, input_variables=["text"])

# 格式化提示模板
# 使用format方法将变量值填入模板中
my = prompt_template.format(text="你好,世界!")

# 调用模型生成响应
# 使用invoke方法将格式化后的提示传递给模型,并获取响应
response = model.invoke(my)

# 打印模型的响应内容
print(response.content)

然后ChatZhipu中添加streaming=True参数启用流式传输功能,然后输出写一下代码

# 流式传输响应
for response in model.stream(my):
    print(response.content)

其他模型AI大模型列表

模型名称简要介绍
AzureChatOpenAI微软Azure平台上的OpenAI服务
BedrockChatAWS Bedrock平台的聊天模型
ChatAnthropicAnthropic公司的Claude大模型
ChatAnyscale提供可扩展的AI模型服务平台
ChatBaichuan百川智能的大语言模型
ChatCohereCohere提供的自然语言处理模型
ChatCozeCoze平台的聊天模型
ChatOctoAIOctoAI提供的AI模型服务
ChatDatabricksDatabricks平台的聊天模型
ChatDeepInfraDeepInfra提供的AI模型服务
ChatEdenAIEdenAI平台的聊天模型
ChatEverlyAIEverlyAI提供的AI服务
ChatFireworksFireworks AI平台
ChatFriendliFriendli提供的AI服务
ChatGooglePalmGoogle PaLM大语言模型
ChatHuggingFaceHugging Face平台的模型
ChatHunyuan腾讯混元大模型
ChatJavelinAIGatewayJavelin AI Gateway服务
ChatKineticaKinetica提供的AI模型
ChatKonkoKonko AI平台
ChatLiteLLMLiteLLM轻量级模型服务
ChatLiteLLMRouterLiteLLM路由服务
ChatMLXApple MLX框架的模型
ChatMLflowAIGatewayMLflow AI网关
ChatMaritalkMaritalk聊天模型
ChatMlflowMLflow平台的模型
ChatNebulaNebula AI平台
ChatOCIGenAIOracle Cloud Infrastructure生成式AI
ChatOllamaOllama本地运行的开源模型
ChatOpenAIOpenAI的GPT模型
ChatPerplexityPerplexity AI搜索模型
ChatPremAIPremAI平台的模型
ChatSparkLLM讯飞星火大模型
ChatSnowflakeCortexSnowflake Cortex AI服务
ChatTongyi阿里通义千问大模型
ChatVertexAIGoogle Vertex AI平台
ChatYandexGPTYandex的GPT模型
ChatYuan2元语义Yuan 2.0模型
ChatZhipuAI智谱清言大模型
ChatLlamaCppLlama C++实现的模型
ErnieBotChat百度文心一言大模型
FakeListChatModel模拟聊天模型
GPTRouterGPT路由服务
GigaChatSber的GigaChat模型
HumanInputChatModel人工输入模型
JinaChatJina AI的聊天模型
LlamaEdgeChatServiceLlama Edge聊天服务
MiniMaxChatMiniMax大模型
MoonshotChat月之暗面(Moonshot)大模型
PaiEasChatEndpoint阿里云PAI平台
PromptLayerChatOpenAIPromptLayer增强的OpenAI模型
QianfanChatEndpoint百度千帆大模型平台
SolarChatUpstage的Solar大模型
VolcEngineMaasChat火山引擎大模型服务
ChatYi零一万物Yi大模型

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值