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

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
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大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
5天前
|
人工智能 自然语言处理 机器人
文档智能与RAG技术如何提升AI大模型的业务理解能力
随着人工智能的发展,AI大模型在自然语言处理中的应用日益广泛。文档智能和检索增强生成(RAG)技术的兴起,为模型更好地理解和适应特定业务场景提供了新方案。文档智能通过自动化提取和分析非结构化文档中的信息,提高工作效率和准确性。RAG结合检索机制和生成模型,利用外部知识库提高生成内容的相关性和准确性。两者的结合进一步增强了AI大模型的业务理解能力,助力企业数字化转型。
35 3
|
7天前
|
人工智能 弹性计算 Serverless
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
本文介绍了零售业中“人—货—场”三要素的变化,指出传统营销方式已难以吸引消费者。现代消费者更注重个性化体验,因此需要提供超出预期的内容。文章还介绍了阿里云基于函数计算的AI大模型,特别是Stable Diffusion WebUI,帮助非专业人士轻松制作高质量的促销海报。通过详细的部署步骤和实践经验,展示了该方案在实际生产环境中的应用价值。
38 6
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
|
4天前
|
人工智能 新制造 芯片
2024年中国AI大模型产业发展报告解读
2024年,中国AI大模型产业迎来蓬勃发展,成为科技和经济增长的新引擎。本文解读《2024年中国AI大模型产业发展报告》,探讨产业发展背景、现状、挑战与未来趋势。技术进步显著,应用广泛,但算力瓶颈、资源消耗和训练数据不足仍是主要挑战。未来,云侧与端侧模型分化、通用与专用模型并存、大模型开源和芯片技术升级将是主要发展方向。
|
10天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
【10月更文挑战第31天】2024年,AI大模型在软件开发领域的应用取得了显著进展,从自动化代码生成、智能代码审查到智能化测试,极大地提升了开发效率和代码质量。然而,技术挑战、伦理与安全问题以及模型可解释性仍是亟待解决的关键问题。开发者需不断学习和适应,以充分利用AI的优势。
|
5天前
|
存储 人工智能 固态存储
如何应对生成式AI和大模型应用带来的存储挑战
如何应对生成式AI和大模型应用带来的存储挑战
|
12天前
|
人工智能 JSON 自然语言处理
基于文档智能&RAG搭建更懂业务的AI大模型
本文介绍了一种结合文档智能和检索增强生成(RAG)技术,构建强大LLM知识库的方法。通过清洗文档内容、向量化处理和特定Prompt,提供足够的上下文信息,实现对企业级文档的智能问答。文档智能(Document Mind)能够高效解析多种文档格式,确保语义的连贯性和准确性。整个部署过程简单快捷,适合处理复杂的企业文档,提升信息提取和利用效率。
|
8天前
|
人工智能 自然语言处理 算法
企业内训|AI/大模型/智能体的测评/评估技术-某电信运营商互联网研发中心
本课程是TsingtaoAI专为某电信运营商的互联网研发中心的AI算法工程师设计,已于近日在广州对客户团队完成交付。课程聚焦AI算法工程师在AI、大模型和智能体的测评/评估技术中的关键能力建设,深入探讨如何基于当前先进的AI、大模型与智能体技术,构建符合实际场景需求的科学测评体系。课程内容涵盖大模型及智能体的基础理论、测评集构建、评分标准、自动化与人工测评方法,以及特定垂直场景下的测评实战等方面。
43 4
|
13天前
|
人工智能
热门 新 1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
热门 新 1024 云上见 AI大模型助力客户对话分析 2000个智能台灯等你来领
50 3
|
13天前
|
机器学习/深度学习 人工智能 算法
AI赋能大学计划·大模型技术与应用实战学生训练营——吉林大学站圆满结营
10月30日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·吉林大学站圆满结营。