有幸参与这次活动,本来是在群里默默无闻的我,看到很多小伙伴们都积极参与到了训练营动手环节,在这种环境的熏陶下,我也鼓起勇气深入参与了。
我是看文档看了很久都没有构思出,我要构建一个什么样的 AI 应用,后面想想,算了!自己就是做开发的,就试试构建出来的应用在“代码生成”方面是否过关。
前期做了大量准备工作,仔细阅读 demo 手册、观看视频等,今天终于决定动手试试了。
产品介绍
NVIDIA NIM
(Neural Interactive Middleware)微服务是一个强大的框架,它提供了基于NVIDIA先进推理软件的预构建容器,这些容器经过优化,能够充分利用NVIDIA GPU的强大计算能力。通过NIM,开发者可以轻松地构建和部署各种生成式AI应用,包括但不限于智能
copilots
、
ChatGPT
风格的聊天机器人、虚拟助手、内容推荐系统以及其他需要复杂推理和生成能力的应用程序。
NIM
的微服务架构支持模块化开发,使得开发者可以专注于创建特定功能的AI模型,而无需从头开始构建整个系统。这种灵活性允许团队并行工作,加速开发流程,并快速迭代产品。
NIM
还提供了一套丰富的
API
和工具集,简化了从数据预处理到模型推理的整个AI应用开发周期。
与传统的模型部署方式相比,
NVIDIA NIM
显著提高了部署效率和灵活性。它通过自动化许多繁琐的步骤,如环境配置、依赖管理、模型优化和容器化,将所需时间从数周缩短至几分钟。这种效率的提升意味着开发者可以更快地将创意转化为原型,进行测试,并根据反馈进行调整,从而加速产品上市时间。
此外,
NIM
还提供了强大的监控和日志记录功能,使开发者能够实时跟踪应用性能,并快速诊断和解决问题。这有助于确保AI应用的稳定性和可靠性,特别是在生产环境中。
活动介绍
NVIDIA携手CSDN推出的NVIDIA NIM黑客松训练营是一个创新的技术实践活动。活动不仅提供了一个实践和探索最新AI技术的平台,还为大家揭开了大型语言模型的神秘面纱,让参与者亲身体验这些强大工具的潜力和应用。
Granite Code 助手极速搭建
- 语言: Python
- IDE工具: pycharm
- API: OpenAi
- 模型: ibm/granite-34b-code-instruct
- 目标: 快速实现一个AI代码助手工具
1、访问官方网站注册账号【用时 3 分钟】
- 输入邮箱,设置登录密码,接收并验证验证码
2、搭建AI应用【用时 26 分钟】
- 选择对应AI模型
- 拷贝代码至IDE
- 检查并粘贴Key
- 此时,发现扩展还没安装,安装所需扩展 (这里大概花了20分钟)
pip install langchain_nvidia_ai_endpoints langchain-community langchain-text-splitters faiss-cpu gradio==3.50.0 setuptools beautifulsoup4
- 修改代码
Content 内容: 按要求生成一下MySQL数据库表:一套产品表和一套订单表,并且还需要它们两者的外关联表,注意:主键 uuid 必须为 32位 16进制 唯一索引,最后请输出数据范例。
from openai import OpenAI
client = OpenAI(
base_url ="https://integrate.api.nvidia.com/v1",
api_key ="API_KEY")
content ="按要求生成一下MySQL数据库表:一套产品表和一套订单表,并且还需要它们两者的外关联表,注意:主键 uuid 必须为 32位 16进制 唯一索引,最后请输出数据范例"
completion = client.chat.completions.create(
model="ibm/granite-34b-code-instruct",
messages=[{"role":"user","content":content}],
temperature=0.5,
top_p=1,
max_tokens=1024,
stream=True)for chunk in completion:if chunk.choices[0].delta.content isnotNone:print(chunk.choices[0].delta.content, end="")
- 执行输出
以下是产品表、订单表和它们的外关联表的 SQL 语言declarations:
createtable product(
uuid char(32)primarykey,
name varchar(255),
price decimal(10,2),
stock int);createtableorder(
uuid char(32)primarykey,
product_uuid char(32),
order_date date,
quantity int,foreignkey(product_uuid)references product(uuid));
uuid 是一个 32 位的 16 進制的unique 索引,product_uuid 是一个产品表的uuid,order_date是订单日期,quantity是订单数量。
以下是这 three 表的一些record example:
product table:
uuid | name | price | stock
-----|------|-------|------123e4567-e89b-12d3-a456-426655440000| hammer |9.99|100123e4567-e89b-12d3-a456-426655440001| wrench |19.99|50ordertable:
uuid | product_uuid | order_date | quantity
-----|--------------|------------|---------123e4567-e89b-12d3-a456-426655440002|123e4567-e89b-12d3-a456-426655440000|2023-06-01|2123e4567-e89b-12d3-a456-426655440003|123e4567-e89b-12d3-a456-426655440001|2023-06-02|1
order_product table(这是一个外关联表,它 link product table 与 ordertable):
order_uuid | product_uuid
------------|-----------------123e4567-e89b-12d3-a456-426655440002|123e4567-e89b-12d3-a456-426655440000123e4567-e89b-12d3-a456-426655440002|123e4567-e89b-12d3-a456-426655440000123e4567-e89b-12d3-a456-426655440003|123e4567-e89b-12d3-a456-426655440001
进程已结束,退出代码为 0
大工告成!
Content 内容:帮我生成一套 Golang 语言的发送和接收 Email 的代码,要求中文注释清晰且详细
// 以下是一段使用 Golang 语言发送和接收 Email 的代码:package main
import("log""net/smtp")funcmain(){// 定义 Email 服务器的 SMTP 地址和端口号
smtpServer :="smtp.example.com:587"// 定义 Email 的发件人、收件人和内容
from :="[email protected]"
to :=[]string{"[email protected]"}
subject :="这是一个测试 Email"
body :="这是一个来自 Go 语言的 Email"
message :=[]byte("From: "+ from +"\nTo: "+ to[0]+"\nSubject: "+ subject +"\n\n"+ body)// 使用 SMTP 发送 Email
err := smtp.SendMail(smtpServer,nil, from, to, message)if err!=nil{
log.Fatal(err)}
log.Println("Email 发送成功")}// 这段代码首先定义了 Email 服务器的 SMTP 地址和端口号,然后定义了 Email 的发件人、收件人和内容。// 接下来,使用 SMTP 发送 Email。这需要使用到 SMTP 库,在 Go 语言中,可以使用 net/smtp 库来实现。// 在 SendsMail() 中,需要提供 SMTP 服务器地址、发件人信息、收件人信息和 Email 内容。// 如果发送 Email 成功,将会在控制台中打印“Email 发送成功”这行信息。// 这段代码可以作为一个基本的 Email 发送 Demo,在实际使用中,还可以进行更加复杂和advance的操作。
进程已结束,退出代码为 0
总结
整体用时 29 分钟,但其中 20 分钟左右是在安装依赖所耗,注册+配置编译耗时总共 9 分钟。
整体搭建起来几乎没有卡点,使用非常便捷。就很赞!
版权归原作者 Lolita... 所有, 如有侵权,请联系我们删除。