AI大模型企业应用实战-LCEL-LangChain表达式语言

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
视觉智能开放平台,视频资源包5000点
简介: 【8月更文挑战第19天】

一种在langchain之上封装的高级解释语言,简化链条开发,支持真实生产环境而发明。

  • 更好的流式支持
  • 更好的异步支持
  • 优化执行时间
  • 支持重试和反馈
  • 轻松获取中间步骤
  • 输入输出强验证
  • 无缝追踪集成
  • 无缝部署集成

SEO Meta-title: 在Langchain之上封装的高级解释语言:简化链条开发,支持生产环境

Meta-description: 了解如何在Langchain上使用高级解释语言,提升流式支持、异步支持、优化执行时间及支持重试和反馈。

Slug: langchain-advanced-explanation-language

Excerpt: 探索一种在Langchain之上封装的高级解释语言,简化链条开发,提供更好的流式和异步支持,优化执行时间,并支持重试和反馈,完美适用于真实生产环境。

Runnable接口

为了方便自定义链,创造了Runnable协议它适用于大多数组件,是一个标准接口,可以轻松地定义自定义链并以标准方式调用它们。

prompt 核心组件:

  • Prompt+LLM
  • RAG
  • SQL查询
  • Agents
  • Chains
  • 添加记忆
  • 使用工具
  • 道德审查
  • 管理提示词
  • 代码小助手

案例

# 定义llm
class QwenTurboTongyi(Tongyi):
    model_name = "qwen-turbo"
llm = QwenTurboTongyi(
    model_name="qwen-turbo",
    temperature=1,
    streaming=True
)
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

prompt = ChatPromptTemplate.from_template("给我讲一个关于 {topic}的笑话")
output_parser = StrOutputParser()

chain = prompt | llm | output_parser

chain.invoke({
   
   "topic": "JavaEdge"})

Prompt

prompt_value = prompt.invoke({
   
   "topic": "刺猬"})
prompt_value

prompt_value.to_messages()

prompt_value.to_string()

LCEL的Pipeline

兼容 OpenAI 接口的通义千问

from openai import OpenAI
import os

def get_response():
    client = OpenAI(
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",# DashScope SDK的base_url
    )
    completion = client.chat.completions.create(
        model="qwen-plus",
        messages=[{
   
   'role': 'system', 'content': 'You are a helpful assistant.'},
                  {
   
   'role': 'user', 'content': '你是谁?'}]
    )
    print(completion.model_dump_json())

if __name__ == '__main__':
    get_response()

输出:

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
    model="qwen-plus"
)
prompt = ChatPromptTemplate.from_template("给我讲一个关于{topic}的笑话")
chain = prompt | model

input schema

# prompt
# 打印输入数据的模式,也就是输入数据应该是什么样的格式
chain.input_schema.schema()

# 查看输入数据模式的函数
prompt.input_schema.schema()

model.input_schema.schema()

Output Schema

# The output schema of the chain is the output schema of its last part, in this case a ChatModel, which outputs a ChatMessage
chain.output_schema.schema()

Stream(流式)

类似 chatgpt 的不断输出的体验:

for s in chain.stream({
   
   "topic": "熊"}):
    print(s.content, end="", flush=True)

Invoke

就需要全部运行完才输出,给人感觉就很慢:

Batch

chain.batch([{
   
   "topic": "熊"}, {
   
   "topic": "猫"}])

# max_concurrency控制并发数
chain.batch([{
   
   "topic": "熊"}, {
   
   "topic": "猫"}, {
   
   "topic": "狗"}], config={
   
   "max_concurrency": 5})

Async Stream 异步

async for s in chain.astream({
   
   "topic": "女人"}):
    print(s.content, end="", flush=True)

await chain.ainvoke({
   
   "topic": "男人"})

Async Batch

await chain.abatch([{
   
   "topic": "熊"},{
   
   "topic": "女人"}])

异步获取中间步骤(只支持 OpenAI的 key)

并行支持

from langchain_core.runnables import RunnableParallel

chain1 = ChatPromptTemplate.from_template("给我讲一个关于{topic}的笑话") | model
chain2 = (
    ChatPromptTemplate.from_template("写两行关于{topic}的诗歌")
    | model
)
combined = RunnableParallel(joke=chain1, poem=chain2)
%%time
chain1.invoke({
   
   "topic": "熊"})

并行执行

%%time
combined.invoke({
   
   "topic": "熊"})

并行批处理,适用于大量生成

%%time
chain1.batch([{
   
   "topic": "熊"}, {
   
   "topic": "猫"}])

并行执行

%%time
combined.batch([{
   
   "topic": "熊"}, {
   
   "topic": "猫"}])

参考:

https://github.com/devinyf/langchain_qianwen

https://python.langchain.com/v0.2/docs/integrations/llms/tongyi/

相关实践学习
阿里云百炼xAnalyticDB PostgreSQL构建AIGC应用
通过该实验体验在阿里云百炼中构建企业专属知识库构建及应用全流程。同时体验使用ADB-PG向量检索引擎提供专属安全存储,保障企业数据隐私安全。
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
4天前
|
人工智能 运维 大数据
体验记录——触手可及,函数计算玩转 AI 大模型
阿里云推出的“触手可及,函数计算玩转 AI 大模型”解决方案,通过按量付费、卓越弹性和快速交付能力,为企业提供了便捷的AI大模型部署途径。评测报告详细分析了该方案的实践原理、部署过程及优势,展示了其在高并发场景下的高效性和成本优势,并提出了改进建议。
15 0
|
4天前
|
人工智能 Serverless
AI 大模型助力客户对话分析 ——实践操作
参与《AI大模型助力客户对话分析》项目,基于阿里云社区操作路书,从架构设计到部署测试,逐步学习并应用大模型进行AI质检。过程中虽有控制台跳转等小挑战,但整体体验流畅,展示了AI技术的便捷与魅力,以及阿里云平台的先进性和社区支持。最终实现的AI质检功能,能够有效提升企业客户服务质量与效率。
23 0
|
2天前
|
存储 人工智能 分布式计算
Parquet 文件格式详解与实战 | AI应用开发
Parquet 是一种列式存储文件格式,专为大规模数据处理设计,广泛应用于 Hadoop 生态系统及其他大数据平台。本文介绍 Parquet 的特点和作用,并演示如何在 Python 中使用 Pandas 库生成和读取 Parquet 文件,包括环境准备、生成和读取文件的具体步骤。【10月更文挑战第13天】
89 60
|
2天前
|
人工智能
新 1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
新 1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
20 4
|
1天前
|
人工智能 资源调度 数据可视化
【AI应用落地实战】智能文档处理本地部署——可视化文档解析前端TextIn ParseX实践
2024长沙·中国1024程序员节以“智能应用新生态”为主题,吸引了众多技术大咖。合合信息展示了“智能文档处理百宝箱”的三大工具:可视化文档解析前端TextIn ParseX、向量化acge-embedding模型和文档解析测评工具markdown_tester,助力智能文档处理与知识管理。
|
1天前
|
人工智能 弹性计算 监控
触手可及,函数计算玩转 AI 大模型解决方案
阿里云推出的“触手可及,函数计算玩转 AI 大模型”解决方案,利用无服务器架构,实现AI大模型的高效部署和弹性伸缩。本文从实践原理、部署体验、优势展现及应用场景等方面全面评估该方案,指出其在快速部署、成本优化和运维简化方面的显著优势,同时也提出在性能监控、资源管理和安全性等方面的改进建议。
15 5
|
1天前
|
人工智能 数据安全/隐私保护 UED
RAG让AI大模型更懂业务解决方案部署使用体验
根据指导文档,部署过程得到了详细步骤说明的支持,包括环境配置、依赖安装及代码示例,确保了部署顺利进行。建议优化知识库问题汇总,增加部署失败案例参考,以提升用户体验。整体解决方案阅读与部署体验良好,有助于大型语言模型在特定业务场景的应用,未来可加强行业适应性和用户隐私保护。
13 5
|
2天前
|
数据采集 人工智能 自然语言处理
文档智能 & RAG让AI大模型更懂业务
文档智能 & RAG让AI大模型更懂业务
|
3天前
|
Serverless 数据安全/隐私保护 前端开发
大模型代码能力体验报告之贪吃蛇小游戏《一》:Claude.ai篇 - 生成、预览和快速部署的serverless一条龙
本文介绍了通过Claude.ai生成并优化Web版贪吃蛇游戏的过程,展示了其强大的代码生成功能及用户友好的界面设计。从初始版本的快速生成到根据用户反馈调整游戏速度,再到提供多种实用工具如文件管理、版本控制和一键部署,Claude.ai不仅是一个代码助手,更像是一个全面的serverless开发平台。文中还呼吁国内厂商关注此类技术的发展。
|
3天前
|
人工智能
智谱 AI 大模型
智谱是清华大学技术成果转化公司,推出中英双语千亿级大模型 GLM-130B、对话模型 ChatGLM、开源模型 ChatGLM-6B、AI 提效助手智谱清言、高效率代码模型 CodeGeeX、多模态理解模型 CogVLM、文生图模型 CogView 和文生视频模型 CogVideo。是国内开源大模型的领先者,大模型领域的经典成功商业案例。
12 1