将 Google Gemini Pro 与 PICO 结合使用

通过免费 API 调用构建您的应用程序

将 Google Gemini Pro 与 PICO 结合使用_第1张图片

转发: Using Google Gemini Pro with PICO


项目介绍

概述

最近,LLM 语言模型在各地涌现,我们使用 Google 最近发布的 Gemini Pro 创建了一个示例。 我使用了Wiznet Scarlet的OpenAI作为如何在pico中使用它的参考。 目前,Gemini Pro 的 API 调用是免费的。 利用这个机会构建您自己的简单应用程序。

参考

将 Google Gemini Pro 与 PICO 结合使用_第2张图片

目前,Gemini Pro 每分钟最多可免费拨打 60 个电话。 API 定价如上。 考虑到性能与 GPT-3.5-turbo 类似,考虑到价格和目前免费的事实,使用 Gemini 不是更好吗?

软件环境

1.下载Thonny缩微胶片环境。

将 Google Gemini Pro 与 PICO 结合使用_第3张图片

Thonny, Python IDE for beginners

2.下载固件

将 Google Gemini Pro 与 PICO 结合使用_第4张图片

MicroPython - Python for microcontrollers

3. Google Gemini API 密钥设置

https://makersuite.google.com/

登录您的 Google 帐户并转到上面的 Google AI Studio 站点,单击“开发人员获取 API 密钥”下的“新项目”以获取新的 API 密钥。

将 Google Gemini Pro 与 PICO 结合使用_第5张图片

将 Google Gemini Pro 与 PICO 结合使用_第6张图片

# Quickly test the API by running a cURL command
curl \
  -H 'Content-Type: application/json' \
  -d '{"contents":[{"parts":[{"text":"Write a story about a magic backpack"}]}]}' \
  -X POST https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY

与 GPT 不同,端点地址包含 api_key,因此您需要相应地调整现有的 OpenAI 代码。

将 Google Gemini Pro 与 PICO 结合使用_第7张图片

由于响应的形式与GPT不同,因此需要参考文档设置索引代码来单独获取文本。

硬件环境

连接 W5xx-EVB-Pico 的以太网端口和 micro5 针 USB(PC、笔记本电脑)。

将 Google Gemini Pro 与 PICO 结合使用_第8张图片

将下载的固件上传到“启动模式”,然后断开并重新连接 USB。

将 Google Gemini Pro 与 PICO 结合使用_第9张图片

工具 -> 解释器

连接后,将解释器设置为“Micro Python (Raspberry PI pico)”,端口设置为之前连接到设备管理器的端口。

源代码设置

https://github.com/jh941213/Gemini_rp2040

!git clone https://github.com/jh941213/Gemini_rp2040.git #download

将 Google Gemini Pro 与 PICO 结合使用_第10张图片

运行send.py,代码就会运行。

Gemini.py 
import json
import urequests


gemini_api_key = "your_api_key"
gemini_url = f"https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key={gemini_api_key}"

def send_prompt_to_gemini(prompt):
    headers = {"Content-Type": "application/json"}
    data = {
        "contents": [{
            "parts": [{"text": prompt}]
        }]
    }
    
    response = urequests.post(gemini_url, headers=headers, data=json.dumps(data))
    if response.status_code == 200:
        response_data = json.loads(response.text)
        return response_data["candidates"][0]["content"]["parts"][0]["text"]
    else:
        raise Exception(f"API error ({response.status_code}): {response.text}")
Send.py
from machine import Pin, SPI
import network
import utime
import gemini

#init Ethernet code
def init_ethernet(timeout=10):
    spi = SPI(0, 2_000_000, mosi=Pin(19), miso=Pin(16), sck=Pin(18))
    nic = network.WIZNET5K(spi, Pin(17), Pin(20))   # spi, cs, reset pin
    # DHCP
    nic.active(True)

    start_time = utime.ticks_ms()
    while not nic.isconnected():
        utime.sleep(1)
        if utime.ticks_ms() - start_time > timeout * 1000:
            raise Exception("Ethernet connection timed out.")
        print('Connecting ethernet...')

    print(f'Ethernet connected. IP: {nic.ifconfig()}')

def main():
    init_ethernet()

    while True:
        prompt = input("User: ")
        if prompt.lower() == "exit":  
            print("Exiting...")
            break

        try:
            response = gemini.send_prompt_to_gemini(prompt)  
            print("Gemini: ", response)
        except Exception as e:
            print("Error: ", e)

if __name__ == "__main__":
    main()
结果

您可以通过在控制台窗口中的提示符下键入 gemini 来完成此操作。

将 Google Gemini Pro 与 PICO 结合使用_第11张图片

将 Google Gemini Pro 与 PICO 结合使用_第12张图片

当退出提示出现时,循环退出。

你可能感兴趣的:(RP2040,W5500,W5500-EVB-Pico,W6100,WIZnet,gemini)