首页 > 编程语言 >使用 LCEL 构建简单的LLM应用程序

使用 LCEL 构建简单的LLM应用程序

时间:2024-07-31 14:26:35浏览次数:11  
标签:template chain api app 应用程序 API LLM LCEL SPARKAI

摘要:本文是对自己学习基于LangChain学习LLM开发的记录,根据LangChain官网使用LCEL构建了一个简单的LLM应用程序。

1.获取各个LLM模型的api。比如OPENAI、讯飞星火大模型等。本文使用讯飞星火大模型进行开发。使用OPENAI的api显示超额,但是明明有18美元的余额,如果读者知道的话请解答。

获取讯飞星火大模型的api本文不再赘述。

2.本文使用PyCharm进行开发。anaconda配置虚拟环境

conda create -n llm python=3.9

3.接下来是对项目的说明。

第一步

创建提示模板

system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
    ('system', system_template),
    ('user', '{text}')
])

第二步

创建调用的模型

SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'

SPARKAI_APP_ID = ''
SPARKAI_API_SECRET = ''
SPARKAI_API_KEY = ''

SPARKAI_DOMAIN = 'generalv3.5'

model = ChatSparkLLM(
    spark_app_id=SPARKAI_APP_ID, spark_api_key=SPARKAI_API_KEY, spark_api_secret=SPARKAI_API_SECRET
)

其中 SPARKAI_APP_ID, SPARKAI_API_SECRET, SPARK_API_KEY 可以在讯飞星火大模型控制台获取api后得知。

第三步

创建解析器

parser = StrOutputParser()

解析器的作用是让调用大模型得到的输出更便于阅读。(本人刚开始学习的浅显见解)

第四步 

创建链(链在一起)

chain = prompt_template | model | parser

第五步

FAST APP 的app定义 

app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="A simple API server using LangChain's Runnable interfaces",
)

第六步

添加链路

add_routes(
    app,
    chain,
    path="/chain",
)

第七步

运行!

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="localhost", port=8000)

下面是最后的运行效果截图

访问地址是localhost:8000/chain/playground/ 别输错啦!

有一个问题希望看到的大佬解答

os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = getpass.getpass()'''

这是根据官网的说明调用LANGSMITH查看后台数据,但是我运行这段的时候没有结果就好像无法连接一样,但是我使用了clash小猫,望解答!

下面是整个代码

#!/usr/bin/env python
from typing import List

from fastapi import FastAPI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_community.chat_models import ChatSparkLLM
from langserve import add_routes

# 1. Create prompt template
system_template = "Translate the following into {language}:"
prompt_template = ChatPromptTemplate.from_messages([
    ('system', system_template),
    ('user', '{text}')
])

# 2. Create model
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'

SPARKAI_APP_ID = '7275269b'
SPARKAI_API_SECRET = 'ZmQ0NTRjYWYxZjExMjNiODY1ZGU1ZGQ3'
SPARKAI_API_KEY = '4794036911ddff294d676d6567f1daac'

SPARKAI_DOMAIN = 'generalv3.5'

model = ChatSparkLLM(
    spark_app_id=SPARKAI_APP_ID, spark_api_key=SPARKAI_API_KEY, spark_api_secret=SPARKAI_API_SECRET
)

# 3. Create parser
parser = StrOutputParser()

# 4. Create chain
chain = prompt_template | model | parser


# 4. App definition
app = FastAPI(
  title="LangChain Server",
  version="1.0",
  description="A simple API server using LangChain's Runnable interfaces",
)

# 5. Adding chain route

add_routes(
    app,
    chain,
    path="/chain",
)

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="localhost", port=8000)

以上就是我根据Langchain官网构建的第一个简单的LLM模型,作为我学习LLM开发的记录的第一篇文章,有任何不对的地方欢迎指正!

标签:template,chain,api,app,应用程序,API,LLM,LCEL,SPARKAI
From: https://blog.csdn.net/java_lover222/article/details/140775942

相关文章

  • OSError: [WinError 193] %1 不是有效的 Win32 应用程序
    我正在尝试使用子进程从python解释器中调用Python文件“hello.py”。但我无法解决这个错误。[Python3.4.1].importsubprocesssubprocess.call(['hello.py','htmlfilename.htm'])Traceback(mostrecentcalllast):File"<pyshell#42>",line1,in&l......
  • LLM-文心一言:以太坊2.0架构
    以太坊2.0的架构是一个复杂且不断发展的系统,旨在解决以太坊1.0存在的性能瓶颈和扩展性问题。以下是以太坊2.0架构的主要组成部分和阶段:信标链(BeaconChain):信标链是以太坊2.0的核心组成部分,它负责协调整个网络并管理权益证明(PoS)协议。信标链本身不存储任何状态信息、DApps或其他......
  • 基于 LLM 制作了一个 SQL 方言转换器,未来的某天我可能会用上
    事件起因,公司有从sqlserver转mysql的打算,源码里有不少sqlserver的语句,没有啥批量修改的好方法,人力解决最稳妥,所以基于大模型制作了一个方言转换器项目基于.NET6MVC+Bootstrap简单页面就没有去build前端了,jquery字符串拼接一把梭项目已开源:https://github.com/MayDay-wpf/SQ......
  • 下一代 CLI 工具,使用Go语言用于构建令人惊叹的网络应用程序
    大家好,今天给大家分享一个创新的命令行工具GoweblyCLI,它专注于使用Go语言来快速构建现代Web应用程序。GoweblyCLI是一款免费开源软件,有助于在后端使用Go、在前端使用htmx和hyperscript以及最流行的CSS框架轻松构建令人惊叹的Web应用程序。CLI生成一个随时可用的......
  • RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anythi
    RAG+AI工作流+Agent:LLM框架该如何选择,全面对比MaxKB、Dify、FastGPT、RagFlow、Anything-LLM,以及更多推荐1.MaxKBMaxKB=MaxKnowledgeBase,是一款基于LLM大语言模型的开源知识库问答系统,旨在成为企业的最强大脑。它能够帮助企业高效地管理知识,并提供智能问答功能。想象一......
  • 如何在 Django 中加载特定应用程序的模板?
    所以我正在高级学习Django,我已经知道如何包含manage.py所在的BASE_DIR中的模板。但是我想知道如何在Django中的特定应用程序中查找模板。例如,我有一个名为“mysite”的项目和一个名为polls的应用程序。现在,我在settings.pyDIRS=中添加了模板[os.path.join(BA......
  • 使用带有 pythonKit XCODE 的嵌入式 Python,在 iOS 应用程序中与 OpenCV-python 签名不
    我根据Beewares使用指南在XCODE中将Python嵌入到我的iOS项目中https://github.com/beeware/Python-Apple-support/blob/main/USAGE.md运行时,我得到pythonKit找不到由ultralytics导入的cv2错误。当我将OpenCV-python添加到我的app_packages文件夹时......
  • 如何在闪亮的应用程序中从geodataframe下载geopackage文件?
    我有一个shiny应用程序,它使用folium在地图上显示多个图层。我想让用户能够将其中一个图层(线串地理数据框)下载为地理包文件。这是我到目前为止的代码:#relevantimportedpackagesfromshinyimportApp,render,ui,reactiveimportpandasaspdimport......
  • 深度 | LLM会吃了开发人员吗?
    目录达摩克利斯之剑——大模型的时代期待新的超级开发个体史上四次工业革命和同时代的工人们LLM会吃了开发人员吗?不,其实并没有那么危险a.智能化编程由来已久b.进化后的AI编程可以做什么c.智能化AI编程的“月之暗面”d.AI编程vs程序员开发者们,站起来武装......
  • 大语言模型LLM资料
    模型:有趣的是,当参数规模超过一定水平时,这个更大的语言模型实现了显著的性能提升,并出现了小模型中不存在的能力,比如上下文学习。为了区别于PLM(预训练语言模型),这类模型被称为大型语言模型(LLMs)。模型LLM的涌现能力被正式定义为「在小型模型中不存在但在大型模型中出现的......