Chrome 居然提供了可以直接调用 LLM 的 API!

Gemini Nano

图片

因为 Gemini 是 Google 自家的亲儿子,所以 Gemini Nano 自然成了第一个实验对象,它是专为高效运行而设计的 Gemini 系列大型语言模型之一,可以在大部分现代的台式机和笔记本电脑上本地运行。这意味着,我们的网站或网络应用现在可以直接运行 AI 功能,而不需要自己去部署或管理 AI 模型。

图片

与自行部署的设备端 AI 相比,浏览器内置 AI 具有以下优势:

  • 易于部署:在浏览器分发模型时,浏览器会考虑设备的功能并管理模型的更新。这意味着,您无需负责通过网络下载或更新大型模型,也无需解决存储空间逐出、运行时内存预算、传送费用等难题。

  • 使用硬件加速:浏览器的 AI 运行时经过优化,可充分利用可用硬件,无论是 GPU、NPU 还是回退到 CPU。因此,我们的应用可以在每台设备上获得最佳的性能。

  • 离线使用:完全不需要链接互联网也可以使用 AI 大模型。

另外,我们也无需承担自行部署模型的成本,也无需担心使用其他 AI 服务引发的安全隐私问题。

在 Chrome Canary 中启用 Gemini Nano

谷歌目前正在 Chrome Canary 上试验 Gemini Nano,它可以在你的机器上本地运行语言模型。

Chrome Canary 是 Google Chrome 的一个实验版本,专为想要在最新功能和 API 广泛发布之前测试它们的开发人员和技术爱好者而设计。

想要试用的话,首先需要下载并安装 Chrome Canary https://www.google.com/chrome/canary/,然后为 Gemini Nano 启用 Prompt API

然后,使用以下 flag 在浏览器中激活 Gemini Nano

  • chrome://flags/#prompt-api-for-gemini-nano

  • chrome://flags/#optimization-guide-on-device-model

图片

激活这些选项后,重新启动 Chrome,然后我们需要等待它将 Gemini Nano 下载到我们的本地机器(尽管模型本身不超过 3GB,但可能需要 22GB 的可用空间)

Gemini Nano 需要一些时间才能下载,在这个过程中,我们可以使用 canCreateTextSession API 来检查模型是否 Ready,它会返回以下三个值:

  • "no",表明设备或浏览器根本不支持 prompt 语言模型。

  • "after-download",表示设备或浏览器支持 prompt 语言模型,但需要下载后才能使用。

  • "readily",表示设备或浏览器支持提示语言模型,无需任何下载步骤即可使用。

如果模型处于下载中的状态,则会提示 after-download

要确认下载状态,可以打开 chrome://components,检查 Optimization Guide On Device Model 的版本是否为 2024.6.5.2205

图片

这时,我们调用 canCreateTextSession ,则会显示 readily 。

图片

使用 Prompt API

打印一下 window.ai ,我们发现目前只有以下几个方法

图片

我们可以查看 https://github.com/explainers-by-googlers/prompt-api 来了解这些 API 的用法。

图片

Prompt API 提案是 Chrome 内置 AI 的早期设计提案,此提案的目标是:

  • 为 Web 开发者提供一个统一的 JavaScript API,用于访问浏览器提供的语言模型。

  • 尽可能抽象语言模型的具体细节,例如分词、系统消息或控制令牌。

  • 引导网页开发者优雅地处理失败情况,例如没有可用的浏览器提供的模型。

  • 允许多种实现策略,包括设备上的或基于云的模型,同时将这些细节对开发者进行抽象。

目前的 Chrome Canary 试验 Gemini Nano 的 API 基本也是按照这个提案来的。

我们直接可以用到的 API 就是 createTextSession,它可以用来创造一个回话上下文,然后它提供了完整输出模式、流式输出模式两种方式:

完整输出:

const session = await ai.createTextSession();

const result = await session.prompt("中国的首都是哪里?");
console.log(result);

图片

流式输出:

const stream = await session.promptStreaming("介绍一下北京的互联网公司?");
for await (const chunk of stream) {
  console.log(chunk);
}

图片

一个案例

基于浏览器提供的内置 AI 能力,我们可以为我们的网站添加很多有意思的功能,比如下面的场景:

  • 对任意文本进行分类、标记和关键词提取;

  • 帮助用户撰写文本,如博客文章、评论或传记;

  • 总结文章、用户评论或聊天记录;

  • 从文章内容生成标题或摘要;

  • 基于网页的非结构化内容回答问题;

  • 语言之间的翻译;

  • 文章校对。

下面是一个小 Demo ,可以用来实现一个简单的划词翻译功能:

首先监听用户鼠标释放事件

document.addEventListener('mouseup', async function() {
    // 获取选中的文本并去除首尾空格
    let selectedText = window.getSelection().toString().trim();
    // 检查选中的文本是否包含英文字母
    if (selectedText && /[a-zA-Z]/.test(selectedText)) {
        try {
            console.log(`正在翻译: ${selectedText}`);
            // 调用翻译函数并获取翻译结果
            const translatedText = await translateText(selectedText);
            console.log(`翻译结果: ${translatedText}`);
        } catch (error) {
            console.error('翻译错误:', error);
        }
    }
});

翻译函数,使用 window.ai 进行翻译

async function translateText(text) {
    // 创建一个文本会话
    const session = await ai.createTextSession();
    // 构建翻译提示
    const prompt = `Translate the following English text to Chinese: "${text}"`;
    
    // 提示模型并等待翻译结果
    const result = await session.prompt(prompt);
    return result;
}

效果如下:

图片

借助这个 API ,你还可以用类似的思路,基于非常简单的代码构建非常强大的 AI 功能,希望它可以快点在标准的浏览器版本中推出 ~

在Unity中调用Language Model API(通常是指像Google的Dialogflow或微软的QnA Maker这样的自然语言处理API),你需要做以下几个步骤: 1. **设置API连接**: - 注册并获取API密钥:首先需要在LLM提供商的网站上注册账号,并获取到相应的访问令牌或API密钥。 - 配置Unity插件:如果你能找到适用于Unity的SDK或插件,按照文档安装并配置好API客户端。 2. **集成HTTP请求库**: - 如果没有直接提供的插件,可以使用Unity的`WWW`类(对于HTTP请求)或第三方库如`HttpUtility`或`RestSharp`来进行网络请求。 3. **编写调用代码**: - 编写函数来发起HTTP GET或POST请求,传递所需的参数(例如查询文本、用户ID等),并将请求发送到LLM API的URL。 ```csharp using UnityEngine; using System.Collections; using RestSharp; // ... public IEnumerator CallLMAPI(string question) { var client = new RestClient("https://your-api-url.com"); var request = new RestRequest(Method.GET); request.AddParameter("query", question); IRestResponse response = await client.ExecuteTaskAsync(request); if (response.IsSuccessful) { // 处理返回的数据 string result = response.Content; Debug.Log(result); } else { Debug.LogError("API call failed with status " + response.StatusDescription); } } ``` 4. **处理响应数据**: - 根据API的返回格式解析数据,这可能是JSON或其他格式,然后根据需求更新游戏内的状态或显示结果给用户。 记得遵守LLM API的服务条款和速率限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值