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

本文涉及的产品
NLP自然语言处理_基础版,每接口每天50万次
视觉智能开放平台,分割抠图1万点
视觉智能开放平台,图像资源包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推出全新企业智能数据平台,用以帮助用户一站式的管理企业数据服务资产,包括创建, 管理,探索, 监控等; 助力企业在现有平台之上快速构建起数据服务资产体系
目录
相关文章
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
3天前
|
人工智能 自然语言处理 机器人
文档智能与RAG技术如何提升AI大模型的业务理解能力
随着人工智能的发展,AI大模型在自然语言处理中的应用日益广泛。文档智能和检索增强生成(RAG)技术的兴起,为模型更好地理解和适应特定业务场景提供了新方案。文档智能通过自动化提取和分析非结构化文档中的信息,提高工作效率和准确性。RAG结合检索机制和生成模型,利用外部知识库提高生成内容的相关性和准确性。两者的结合进一步增强了AI大模型的业务理解能力,助力企业数字化转型。
32 3
|
6天前
|
人工智能 弹性计算 Serverless
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
本文介绍了零售业中“人—货—场”三要素的变化,指出传统营销方式已难以吸引消费者。现代消费者更注重个性化体验,因此需要提供超出预期的内容。文章还介绍了阿里云基于函数计算的AI大模型,特别是Stable Diffusion WebUI,帮助非专业人士轻松制作高质量的促销海报。通过详细的部署步骤和实践经验,展示了该方案在实际生产环境中的应用价值。
37 6
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
|
2天前
|
人工智能 新制造 芯片
2024年中国AI大模型产业发展报告解读
2024年,中国AI大模型产业迎来蓬勃发展,成为科技和经济增长的新引擎。本文解读《2024年中国AI大模型产业发展报告》,探讨产业发展背景、现状、挑战与未来趋势。技术进步显著,应用广泛,但算力瓶颈、资源消耗和训练数据不足仍是主要挑战。未来,云侧与端侧模型分化、通用与专用模型并存、大模型开源和芯片技术升级将是主要发展方向。
|
4天前
|
存储 人工智能 固态存储
如何应对生成式AI和大模型应用带来的存储挑战
如何应对生成式AI和大模型应用带来的存储挑战
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗领域的应用及其挑战
【10月更文挑战第34天】本文将探讨人工智能(AI)在医疗领域的应用及其面临的挑战。我们将从AI技术的基本概念入手,然后详细介绍其在医疗领域的各种应用,如疾病诊断、药物研发、患者护理等。最后,我们将讨论AI在医疗领域面临的主要挑战,包括数据隐私、算法偏见、法规合规等问题。
21 1
|
9天前
|
存储 XML 人工智能
深度解读AI在数字档案馆中的创新应用:高效识别与智能档案管理
基于OCR技术的纸质档案电子化方案,通过先进的AI能力平台,实现手写、打印、复古文档等多格式高效识别与智能归档。该方案大幅提升了档案管理效率,确保数据安全与隐私,为档案馆提供全面、智能化的电子化管理解决方案。
98 48
|
4天前
|
机器学习/深度学习 人工智能 算法
AI在医疗领域的应用与挑战
本文探讨了人工智能(AI)在医疗领域的应用,包括其在疾病诊断、治疗方案制定、患者管理等方面的优势和潜力。同时,也分析了AI在医疗领域面临的挑战,如数据隐私、伦理问题以及技术局限性等。通过对这些内容的深入分析,旨在为读者提供一个全面了解AI在医疗领域现状和未来发展的视角。
28 10
|
5天前
|
机器学习/深度学习 人工智能 监控
探索AI在医疗领域的应用与挑战
本文深入探讨了人工智能(AI)在医疗领域中的应用现状和面临的挑战。通过分析AI技术如何助力疾病诊断、治疗方案优化、患者管理等方面的创新实践,揭示了AI技术为医疗行业带来的变革潜力。同时,文章也指出了数据隐私、算法透明度、跨学科合作等关键问题,并对未来的发展趋势进行了展望。
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
【10月更文挑战第31天】2024年,AI大模型在软件开发领域的应用取得了显著进展,从自动化代码生成、智能代码审查到智能化测试,极大地提升了开发效率和代码质量。然而,技术挑战、伦理与安全问题以及模型可解释性仍是亟待解决的关键问题。开发者需不断学习和适应,以充分利用AI的优势。