😊

数行でできる!GroqとGradioを使ったLLMアプリケーション開発入門(📒 GoogleColab ノートブック)

2024/11/05に公開

このノートブックでは、GroqのAPIを使用してGradioベースのチャットインターフェースを構築する方法を学びます。

環境設定

まず最初に、必要なライブラリをインストールします。

!pip install groq-gradio

APIキーの設定

Groq APIを使用するために、APIキーを設定します。セキュリティのため、Google Colabのユーザーデータ機能を使用してAPIキーを安全に管理します。

from google.colab import userdata

# APIキーの取得
GROQ_API_KEY = userdata.get('GROQ_API_KEY')

# 環境変数として設定
import os
os.environ["GROQ_API_KEY"] = GROQ_API_KEY

基本的なチャットインターフェースの作成

最もシンプルな形式でGroqのLLMを使用したチャットインターフェースを作成します。

import gradio as gr
import groq_gradio

# 基本的なチャットインターフェースの作成
demo = gr.load(
    name='llama-3.2-3b-preview',  # Groqが提供するモデル
    src=groq_gradio.registry,     # Groqの登録済みインターフェース
)

demo.launch()

カスタマイズしたインターフェース

チャットインターフェースをカスタマイズして、より使いやすい形に整えます。

import gradio as gr
import groq_gradio

# カスタマイズされたインターフェース
custom_demo = gr.load(
    name='llama-3.2-3b-preview',
    src=groq_gradio.registry,
    title='AIアシスタント',  # インターフェースのタイトル
    description="Llama 3.2 3B Previewモデルとチャットができます。",  # 説明文
    examples=[  # サンプルプロンプト
        "量子重力について5歳児に説明してください。",
        "人工知能の歴史について教えてください。"
    ]
)

custom_demo.launch()

複数モデルのインターフェース

複数のモデルを切り替えて使用できるインターフェースを作成します。

import gradio as gr
import groq_gradio

# 複数モデルのタブインターフェース
with gr.Blocks() as multi_model_demo:
    with gr.Tab("Llama 3.2 3B"):
        gr.load('llama-3.2-3b-preview', src=groq_gradio.registry)
    with gr.Tab("Llama 3.2 1B"):
        gr.load('llama-3.2-1b-preview', src=groq_gradio.registry)

multi_model_demo.launch()

注意点とトラブルシューティング

  1. APIキーの取り扱い
  • APIキーは絶対に公開しないようにしてください
  • 環境変数として設定する場合は、アプリケーションの公開前に必ず削除してください
  1. 認証エラーが発生した場合
    以下のようなコードで直接APIキーを設定することができます:
import os
os.environ["GROQ_API_KEY"] = "your-api-key-here"  # 実際のAPIキーに置き換えてください

まとめ

このノートブックでは以下の内容を学びました:

  • Groq APIの基本的な設定方法
  • シンプルなチャットインターフェースの作成
  • インターフェースのカスタマイズ
  • 複数モデルの統合
  • セキュリティとトラブルシューティング

より詳細な情報はGroqの公式ドキュメントを参照してください。

📒ノートブック

https://colab.research.google.com/drive/1OeY6Ue_NRCj0ZJJlCErA8sD3dSmGKbL8?usp=sharing

<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Discussion