> ## Documentation Index
> Fetch the complete documentation index at: https://docs.coreweave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Groq

> Weave で Groq LPU 推論をトラッキングおよび監視し、LLM アプリケーションのモデルの Call、パフォーマンスメトリクス、関数チェーンを取得します。

<a target="_blank" href="https://colab.research.google.com/github/wandb/examples/blob/master/weave/docs/quickstart_groq.ipynb" aria-label="Open in Google Colab">
  <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab" />
</a>

<Note>
  セットアップなしで、Weave 上で Groq モデルを試してみませんか？ [LLM Playground](/ja/products/wandb/weave/guides/tools/playground) をお試しください。
</Note>

[Groq](https://groq.com/) は、高速な AI 推論を提供する AI インフラストラクチャー企業です。Groq の LPU Inference Engine は、計算速度、品質、エネルギー効率を追求して構築されたハードウェアおよびソフトウェアプラットフォームです。Weave は Groq のチャット補完の Call を自動的にトラッキングし、ログします。

このページでは、Weave を使用して Groq のチャット補完の Call をトレースする方法、独自の関数を Weave Op としてラップする方法、`Model` オブジェクトを使用して実験を整理する方法について説明します。

<h2 id="tracing">
  トレース
</h2>

言語モデルアプリケーションのトレースを、開発時と本番時の両方で中央のロケーションに保存することが重要です。これらのトレースは、アプリケーションのデバッグに役立ち、改善のためのデータセットとして機能します。

Weave は [Groq](https://groq.com/) のトレースを自動的に取得します。トラッキングを開始するには、`weave.init(project_name="<your-wandb-project-name>")` を呼び出し、通常どおりライブラリを使用してください。`<>` で囲まれた値を自分の値に置き換えてください。

```python lines theme={"system"}
import os
import weave
from groq import Groq

weave.init(project_name="groq-project")

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)
chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Explain the importance of fast language models",
        }
    ],
    model="llama3-8b-8192",
)
```

| <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/groq_weave_dasboard.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=25746a7310d4cab0ee36dad1045b6cc7" alt="Groq Weave ダッシュボード（追跡された LLM Call、パフォーマンス メトリクス、トレース情報付き）" width="2766" height="1680" data-path="products/wandb/weave/_media/groq_weave_dasboard.png" /> |
| - |
| Weave は現在、Groq ライブラリを通じて行われたすべての LLM Call をトラッキングし、ログします。トレースは Weave の Web インターフェースで表示できます。 |

<h2 id="track-your-own-ops">
  独自の op をトラッキングする
</h2>

関数を `@weave.op` でラップすると、入力、出力、アプリのロジックを取得できるため、アプリ内でデータがどのように流れるかをデバッグできます。op は深くネストでき、トラッキングしたい関数のツリーを構築できます。また、実験中にコードが自動的にバージョン管理されるため、git にコミットされていないアドホックな変更内容も取得できます。

[`@weave.op`](/ja/products/wandb/weave/guides/tracking/ops) でデコレートした関数を作成します。

次の例では、`recommend_places_to_visit` 関数を `@weave.op` でラップしています。この関数は、指定した都市のおすすめの観光スポットを提案します。

```python lines theme={"system"}
import os
import weave
from groq import Groq


weave.init(project_name="groq-test")

client = Groq(
    api_key=os.environ.get("GROQ_API_KEY"),
)

@weave.op()
def recommend_places_to_visit(city: str, model: str="llama3-8b-8192"):
    chat_completion = client.chat.completions.create(
        messages=[
            {
                "role": "system",
                "content": "You are a helpful assistant meant to suggest places to visit in a city",
            },
            {
                "role": "user",
                "content": city,
            }
        ],
        model="llama3-8b-8192",
    )
    return chat_completion.choices[0].message.content


recommend_places_to_visit("New York")
recommend_places_to_visit("Paris")
recommend_places_to_visit("Kolkata")
```

| <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/groq_weave_tracing.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=52184f5a65a6b2ecb657900fd5cd2e65" alt="op デコレーションと関数呼び出し階層、トレース詳細を表示する Groq Weave トレース インターフェース" width="2766" height="1680" data-path="products/wandb/weave/_media/groq_weave_tracing.png" /> |
| - |
| `recommend_places_to_visit` 関数を `@weave.op` でデコレートすると、その入力と出力に加え、関数内部で行われるすべての LM Call をトレースできます。 |

<h2 id="create-a-model-for-easier-experimentation">
  実験を容易にするための `Model` を作成する
</h2>

多くの要素が絡み合っていると、実験を整理するのは困難です。[`Model`](/ja/products/wandb/weave/guides/core-types/models) クラスを使用すると、system prompt や使用しているモデルなど、アプリの実験の詳細を記録して整理できます。これにより、アプリのさまざまな反復処理を整理して比較しやすくなります。

[`Model`](/ja/products/wandb/weave/guides/core-types/models) は、コードのバージョン管理や入力と出力の記録に加えて、アプリケーションの動作を制御する構造化されたパラメーターも記録します。そのため、どのパラメーターが最も効果的だったかを検索しやすくなります。また、Weave モデル は `serve` や [`評価`](/ja/products/wandb/weave/guides/core-types/evaluations) と組み合わせて使用することもできます。

以下の例では、`GroqCityVisitRecommender` を使って実験できます。これらのいずれかを変更するたびに、`GroqCityVisitRecommender` の新しい*バージョン*が作成されます。

```python lines theme={"system"}
import os
from groq import Groq
import weave


class GroqCityVisitRecommender(weave.Model):
    model: str
    groq_client: Groq

    @weave.op()
    def predict(self, city: str) -> str:
        system_message = {
            "role": "system",
            "content": """
You are a helpful assistant meant to suggest places to visit in a city
""",
        }
        user_message = {"role": "user", "content": city}
        chat_completion = self.groq_client.chat.completions.create(
            messages=[system_message, user_message],
            model=self.model,
        )
        return chat_completion.choices[0].message.content


weave.init(project_name="groq-test")
city_recommender = GroqCityVisitRecommender(
    model="llama3-8b-8192", groq_client=Groq(api_key=os.environ.get("GROQ_API_KEY"))
)
print(city_recommender.predict("New York"))
print(city_recommender.predict("San Francisco"))
print(city_recommender.predict("Los Angeles"))
```

| <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/groq_weave_model.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a1c73e87922a2f4bd66cdb16379c8e03" alt="Groq Weave Model のトレースおよびバージョン管理インターフェース（モデルバージョン、トレース履歴、パフォーマンスメトリクス付き）" width="2766" height="1680" data-path="products/wandb/weave/_media/groq_weave_model.png" /> |
| - |
| [`Model`](/ja/products/wandb/weave/guides/core-types/models) を使用して Call をトレースおよびバージョン管理します。 |

<h3 id="serve-a-weave-model">
  Weave モデルをサーブする
</h3>

バージョン管理された `Model` を用意したら、テストや下流のアプリケーションで利用できるよう、サービスとしてデプロイできます。任意の `weave.Model` オブジェクトの Weave 参照があれば、FastAPI サーバーを起動してモデルを[サーブ](/ja/products/wandb/weave/guides/tools/serve)できます。

| [<img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/wandb/weave/_media/groq_weave_model_version.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=3fddce7630c7ff8c491f3e6845a080e2" alt="dspy_weave_model_serve.png" width="2766" height="1680" data-path="products/wandb/weave/_media/groq_weave_model_version.png" />](https://forge.coreweave.com/wandb/geekyrakshit/groq-test/weave/objects/GroqCityVisitRecommender/versions/6O1xPTJ9yFx8uuCjJAlI7KgcVYxXKn7JxfmVD9AQT5Q) |
| - |
| 任意の `weave.Model` の Weave 参照は、UI で対象のモデルに移動し、そこからコピーできます。 |

ターミナルで次のコマンドを実行して、モデルをサーブします。

```shell theme={"system"}
weave serve weave://your_entity/project-name/YourModel:<hash>
```


## Related topics

- [サンプルコードとノートブック](/ja/products/wandb/examples.md)
