最初由 liz acosta 发表在 streamlit 博客上
还记得第一次使用人工智能图像生成器有多酷吗?那两千万根手指和噩梦般的吃意大利面的画面不仅仅是有趣,它们在不经意间透露了哎呀!人工智能模型的智能程度与我们一样。和我们一样,他们也很难画手。
人工智能模型很快变得更加复杂,但现在的模型数量太多了。而且,和我们一样,他们中的一些人比其他人更擅长某些任务。以文本生成为例。尽管 llama、gemma 和 mistral 都是法学硕士,但他们中的一些人更擅长生成代码,而另一些人则更擅长头脑风暴、编码或创意写作。根据提示,它们提供不同的优势,因此在您的 ai 应用程序中包含多个模型可能是有意义的。
但是如何将所有这些模型集成到你的应用程序中而不需要重复代码?如何使人工智能的使用更加模块化,从而更易于维护和扩展?这就是 API 可以提供用于跨不同技术进行通信的标准化指令集的地方。
在这篇博文中,我们将了解如何使用 replicate 和 streamlit 来创建一个应用程序,该应用程序允许您通过单个 api 调用来配置和提示不同的 llm。别担心——当我说“应用程序”时,我并不是说必须启动整个 Flask 服务器或繁琐地配置你的路由或担心 CSS。 streamlit 已经为您解决了这个问题 ?
继续阅读以学习:
不想读书?以下是探索此演示的一些其他方法:
什么是复制?
replicate 是一个平台,使开发人员能够通过 cli、api 或 sdk 部署、微调和访问开源 ai 模型。该平台可以轻松地以编程方式将人工智能功能集成到软件应用程序中。
replicate 上的可用模型
- 文本:像 llama 3 这样的模型可以根据输入提示生成连贯且上下文相关的文本。
- 图像:像稳定扩散这样的模型可以根据文本提示生成高质量的图像。
- 语音:像 whisper 这样的模型可以将语音转换为文本,而像 xtts-v2 这样的模型可以生成听起来自然的语音。
- 视频:像 animate-diff 这样的模型或像 videocrafter 这样的稳定扩散的变体可以分别根据文本和图像提示生成和/或编辑视频。
当一起使用时,replicate 允许您开发多模式应用程序,这些应用程序可以接受输入并生成各种格式的输出,无论是文本、图像、语音还是视频。
什么是 streamlit?
streamlit 是一个开源 Python 框架,只需几行代码即可构建高度交互的应用程序。 streamlit 与生成式 ai 中的所有最新工具集成,例如任何 llm、矢量数据库或各种 ai 框架(如 langchain、llamaindex 或 weights & biases)。 streamlit 的聊天元素使与 ai 交互变得特别容易,因此您可以构建“与您的数据对话”的聊天机器人。
与 replicate 这样的平台相结合,streamlit 允许您创建生成式 ai 应用程序,而无需任何应用程序设计开销。
? 要了解有关 streamlit 如何让您取得进步的更多信息,请查看这篇博文。
要了解有关 streamlit 的更多信息,请查看 101 指南。
尝试应用程序配方:复制 + streamlit
但不要相信我的话。亲自尝试该应用程序或观看视频演示,看看您的想法。
在此演示中,您将使用 replicate 启动 streamlit 聊天机器人应用程序。该应用程序使用单个 api 来访问三个不同的 llm 并调整温度和 top-p 等参数。这些参数影响人工智能生成文本的随机性和多样性,以及选择标记的方法。
? 什么是模型温度? 温度控制模型如何选择令牌。较低的温度使模型更加保守,有利于常见和“安全”的词语。相反,较高的温度会鼓励模型通过选择可能性较小的令牌来承担更多风险,从而产生更多创意输出。
? 什么是top-p? 也称为“核采样”——是另一种调整随机性的方法。随着 top-p 值的增加,它的工作原理是考虑更广泛的代币集。较高的 top-p 值会导致采样的代币范围更加多样化,从而产生更加多样化的输出。
先决条件
- python 版本 >=3.8, !=3.9.7
- 复制 api 密钥 (请注意,需要使用付款方式才能访问超出免费试用限制的功能。)
? 要了解有关 api 密钥的更多信息,请查看此处的博客文章。
环境设置
本地设置
- 克隆 cookbook 存储库:Git clone HTTPs://github.com/streamlit/cookbook.git
- 从cookbook根目录,将目录更改为复制配方:cdrecIPes/replicate
- 将您的复制 api 密钥添加到 .streamlit/secrets_template.toml 文件中
- 将文件名从secrets_template.toml更新为secrets.toml: mv .streamlit/secrets_template.toml .streamlit/secrets.toml (要了解有关 streamlit 中秘密处理的更多信息,请参阅此处的文档。)
- 创建虚拟环境:python -m .envreplicatevenv
- 激活虚拟环境:sourcereplicatevenv/bin/activate
- 安装依赖项:pip install -rrequirements.txt
github codespaces 设置
-
从 github 上的 cookbook 存储库,通过从“代码”按钮中选择“代码空间”选项来创建一个新的代码空间
-
生成代码空间后,将您的 replicate api 密钥添加到recipe/replicate/.streamlit/secrets_template.toml 文件中
-
将文件名从secrets_template.toml更新为secrets.toml
(要了解有关 streamlit 中秘密处理的更多信息,请参阅此处的文档。) -
从cookbook根目录,将目录更改为复制食谱:cdrecipes/replicate
使用 replicate 运行文本生成模型
- 在recipes/replicate目录中创建一个名为replicate_hello_world.py的文件
-
将以下代码添加到文件中:
import replicate import toml import os # read the secrets from the secrets.toml file with open(".streamlit/secrets.toml", "r") as f: secrets = toml.load(f) # create an environment variable for the replicate api token os.environ['replicate_api_token'] = secrets["replicate_api_token"] # run a model for event in replicate.stream("Meta/meta-llama-3-8b", input={"prompt": "what is streamlit?"},): print(str(event), end="")
-
运行脚本:pythonreplicate_hello_world.py
您应该会看到模型生成的文本的打印结果。
要了解有关复制模型及其工作原理的更多信息,您可以在此处参考其文档。从本质上讲,复制“模型”是指经过训练、打包和发布的软件程序,它接受输入并返回输出。
在这种特殊情况下,模型是meta/meta-llama-3-8b,输入是“提示”:“什么是streamlit?”。当您运行脚本时,将调用 replicate 端点,打印的文本是模型通过 replicate 返回的输出。
运行演示 replicate streamlit 聊天机器人应用程序
要运行演示应用程序,请使用 streamlit cli:streamlit run streamlit_app.py。
运行此命令会将应用程序部署到本地主机上的端口。当您访问此位置时,您应该会看到 streamlit 应用程序正在运行。
您可以使用此应用程序通过复制提示不同的llm,并根据您提供的配置生成生成文本。
适用于多个 llm 模型的通用 api
使用 replicate 意味着您可以使用一个 api 提示多个开源 llm,这有助于简化 ai 与现代软件流程的集成。
这是通过以下代码块完成的:
1 2 3 4 5 6 |
|
模型、温度和 top p 配置由用户通过 streamlit 的输入小部件提供。 streamlit 的聊天元素可以轻松地将聊天机器人功能集成到您的应用程序中。最好的部分是您不需要了解 Javascript 或 css 来实现和设计这些组件 – streamlit 提供了所有开箱即用的功能。
复制最佳实践
使用提示的最佳模型
replicate 提供了一个 api 端点来搜索公共模型。您还可以在他们的网站上探索特色模型和用例。这可以让您轻松找到适合您特定需求的型号。
不同的型号有不同的性能特点。根据您对准确性和速度的需求使用适当的模型。
使用 Webhooks、流媒体和图像 url 提高性能
replicate 的输出数据仅可用一个小时。使用 webhook 将数据保存到您自己的存储中。您还可以设置 webhooks 来处理来自模型的异步响应。这对于构建可扩展的应用程序至关重要。
尽可能利用流媒体。某些模型支持流式传输,允许您在生成部分结果时获得它们。这非常适合实时应用程序。
与使用 base 64 编码的上传图像相比,使用图像 url 可以提高性能。
使用 streamlit 释放 ai 的潜力
借助 streamlit,数月的应用程序设计工作简化为 只需几行 python 代码。它是展示最新人工智能发明的完美框架。