0


【NVIDIA NIM 黑客松训练营】极速构建自己的 AI 应用——Granite Code 助手

有幸参与这次活动,本来是在群里默默无闻的我,看到很多小伙伴们都积极参与到了训练营动手环节,在这种环境的熏陶下,我也鼓起勇气深入参与了。

我是看文档看了很久都没有构思出,我要构建一个什么样的 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 分钟。

整体搭建起来几乎没有卡点,使用非常便捷。就很赞!


本文转载自: https://blog.csdn.net/weixin_57332537/article/details/143471547
版权归原作者 Lolita... 所有, 如有侵权,请联系我们删除。

“【NVIDIA NIM 黑客松训练营】极速构建自己的 AI 应用——Granite Code 助手”的评论:

还没有评论