当前位置: 首页 > news >正文

试用AWS全新神器:Amazon Bedrock的「Open Artifacts」版Claude.ai Artifacts

Claude.ai的Artifacts真是太方便了。

GitHub上的AWS Samples仓库中有一个仿制Artifacts的应用程序。

Open Artifacts for Amazon Bedrock

https://github.com/aws-samples/open_artifacts_for_bedrockicon-default.png?t=N7T8https://github.com/aws-samples/open_artifacts_for_bedrock本文将介绍「Open Artifacts for Amazon Bedrock」。

Open Artifacts for Amazon Bedrock

「Open Artifacts for Amazon Bedrock」是一个以Next.js应用程序形式提供的工具。其后端的代码解释部分通过Docker容器实现。

主要使用的库有:

  • react: 18
  • next: 14.2.4
  • tailwindcss: 3.4.1
  • ai: 3.2.15
  • @ai-sdk/amazon-bedrock: 0.0.5
  • @ai-sdk/anthropic: 0.0.23

其中,「ai」库是Vercel AI SDK。

Vercel AI SDK

Vercel AI SDK 是一个 TypeScript 工具包,旨在帮助开发人员使用 React、Next.js、Vue、Svelte、Node.js 等构建人工智能驱动的应用程序。

 这里是代码解释器部分的Dockerfile。它使用了 "Python 3.10" 的基础镜像,并安装了一些库和字体

FROM python:3.10# Set working directory
WORKDIR /appRUN apt-get update && apt-get install -y \wget \bzip2 \ca-certificates \libglib2.0-0 \libxext6 \libsm6 \libxrender1 \git \graphviz \unzip \&& rm -rf /var/lib/apt/lists/*# 更新包列表并安装字体
RUN apt-get update && apt-get install -y \fonts-wqy-microhei \fonts-wqy-zenhei \fonts-noto-cjk \&& rm -rf /var/lib/apt/lists/*# 使用 Google Noto Fonts(广泛支持多种语言):
RUN wget https://noto-website-2.storage.googleapis.com/pkgs/NotoSansCJKsc-hinted.zip \&& unzip NotoSansCJKsc-hinted.zip -d /usr/share/fonts/noto \&& fc-cache -f -v \&& rm NotoSansCJKsc-hinted.zip# Install Python packages using pip
RUN pip install --no-cache-dir numpy pandas scipy scikit-learn matplotlib seaborn jupyter_client \diagrams requests bs4 requests openpyxl# Set default command
CMD ["python"]

提示词和工具的机制

在系统提示词中,指定了 "你是一名Python和JavaScript开发者" 的角色。Python工具和JavaScript工具的规格如下所述。

`
You are a skilled Python and Javascript developer.
You are also expert of data science and data analysis, and you are also expert of solution architecture of AWS, Google Cloud, Azure, etc.
You are very familiar with the following tools and libraries:
For Python:
<python_libraries>
pandas, numpy, matplotlib, seaborn, scikit-learn, diagrams, etc.
</python_libraries>For JavaScript:
<js_libraries>
d3, react, canvas, threejs, cannonjs, etc.
</js_libraries>You have the ability to choose the appropriate tools and run Python or JavaScript code to solve the user's task. Code for each programming language runs in its own context and can reference previous definitions and variables.
Your code will be run in a seperate sandbox, so you don't write the code that contains code to read the data or file locally.
Here is extra guidance that help you to prevent bugs:
<guidance>
1. when you use matplotlib to plot a chart, you should not generate code "plt.style.use('seaborn')", because it will errors, you can use plt.style.use('ggplot') instead.
2. when you use  matplotlib to plot a chart, to add chinese font, you should add the following code before plotting:<code_snippet>plt.rcParams['font.sans-serif'] = ['WenQuanYi Micro Hei']  # 使用文泉驿微米黑plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题</code_snippet>
</guidance>
`

工具有两个:"runPython" 和 "runJs"。

  • runJs

这个工具没有特别的处理,JavaScript代码会直接返回到屏幕。

export async function runJs(userID: string, code: string) {const result ={logs:{stdout:[],stderr:[]},error:undefined,results:[{html:code}]}return result}
  • runPython

Python工具会启动一个Docker容器,并获取执行结果。 在持久化Bedrock生成的Python代码和附加文件(如果用户有附加文件)后,通过卷挂载的方式将其传递给Docker容器。

const dockerCommand = `docker run --rm -v "${workingDirPath}:/app" -w /app ${pythonContainer} python ${tempPrefix}_temp_script.py`;

在执行Python代码后,生成的图像可能会以PNG格式输出到同一目录。然后,会获取该目录内的PNG文件,并将其返回到屏幕。

构建方法

首先需要预先安装Node.js、Yarn和Docker。

然后,克隆源码。

git clone https://github.com/aws-samples/open_artifacts_for_bedrock.git

然后,构建代码解释器的Docker镜像。

cd open_artifacts/docker_filesdocker build -t python3.10 .

创建一个 .env 文件。如果已安装AWS CLI,则不需要设置AWS_ACCESS_KEY_ID等。

AWS_ACCESS_KEY_ID=*******
AWS_SECRET_ACCESS_KEY=******
AWS_REGION=us-east-1
PYTHON_DOCKER_IMAGE=python3.10
MODEL_ID=anthropic.claude-3-5-sonnet-20240620-v1:0
USERNAME=
PASSWORD=

构建并启动。

cd ..
yarn
yarn dev

在浏览器中访问 http://localhost:3000/

使用在 .env 中设置的用户名和密码登录。

我尝试制作了一个打砖块游戏。

 

 右半部分可以在“code”和“Preview”之间切换。切换时会显示打砖块游戏。

 另外,我还修改了球的颜色。效果很好。

我还实现了传递CSV文件并生成图表的功能。

在GitHub上还有另一个Artifacts的克隆,我也计划接下来进行验证。

Bedrock的Artifacts和工具

https://github.com/aws-samples/artifacts-and-tools-for-bedrock

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • app:layout_constrainedWidth=“true“ 在 compose 中怎么写, constraintlayout 强约束
  • 机器学习——第十章 降维与度量学习
  • Pytorch添加自定义算子之(11)-C++应用程序将onnx模型编译并转成tensorrt可执行模型
  • 【Redis】Redis 数据类型
  • 从一个服务预热不生效问题谈微服务无损上线
  • 洛伦兹微分方程与混沌理论
  • Ubuntu22.04 Docker更换阿里云镜像
  • NVIDIA Triton系列03-开发资源说明
  • 几款设计师必备的AI抠图软件工具分享给你!
  • 把html字符串转为可以被js操作的dom
  • 【实现100个unity特效之17】在unity中使用shader和ShaderGraph分别实现模糊特定层,高斯模糊效果
  • leetcode数论(2280. 表示一个折线图的最少线段数)-几何
  • 开发学习日记1
  • SQL布尔盲注
  • 如何利用 ChatGPT 提高工作效率?
  • 30天自制操作系统-2
  • Angular2开发踩坑系列-生产环境编译
  • CAP 一致性协议及应用解析
  • Centos6.8 使用rpm安装mysql5.7
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • JAVA_NIO系列——Channel和Buffer详解
  • JWT究竟是什么呢?
  • TypeScript迭代器
  • vuex 学习笔记 01
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 分布式任务队列Celery
  • 力扣(LeetCode)965
  • 如何胜任知名企业的商业数据分析师?
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • # 飞书APP集成平台-数字化落地
  • #C++ 智能指针 std::unique_ptr 、std::shared_ptr 和 std::weak_ptr
  • #NOIP 2014# day.2 T2 寻找道路
  • (1)STL算法之遍历容器
  • (1)常见O(n^2)排序算法解析
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (zt)最盛行的警世狂言(爆笑)
  • (二)Eureka服务搭建,服务注册,服务发现
  • (三)mysql_MYSQL(三)
  • (原)Matlab的svmtrain和svmclassify
  • (转)memcache、redis缓存
  • (转载)深入super,看Python如何解决钻石继承难题
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *上位机的定义
  • .chm格式文件如何阅读
  • .Net - 类的介绍
  • .Net Winform开发笔记(一)
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • [240607] Jina AI 发布多模态嵌入模型 | PHP 曝新漏洞 | TypeScript 5.5 RC 发布公告
  • [Android] Upload package to device fails #2720
  • [AX]AX2012 R2 出差申请和支出报告
  • [C]整形提升(转载)
  • [C++]高精度 bign (重载运算符版本)