Documentation Index
Fetch the complete documentation index at: https://wb-21fd5541-john-wbdocs-2044-rename-serverless-products.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
Groq は、高速な AI 推論を提供する AI インフラストラクチャ企業です。Groq の LPU™ Inference Engine は、卓越した計算速度、品質、エネルギー効率を実現するハードウェアおよびソフトウェア プラットフォームです。Weave は、Groq の chat completion を使った呼び出しを自動的にトラッキングし、ログに記録します。
言語モデル アプリケーションのトレースは、開発中と本番環境の両方で、一元的な場所に保存しておくことが重要です。これらのトレースはデバッグに役立つだけでなく、アプリケーションを改善するのに役立つデータセットとしても利用できます。
Weave は Groq のトレースを自動的に取得します。トラッキングを開始するには、weave.init(project_name="<YOUR-WANDB-PROJECT-NAME>") を呼び出し、あとは通常どおりライブラリを使用してください。
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",
)
 |
|---|
| Weave は、Groq ライブラリを通じて実行されたすべての LLM 呼び出しを追跡してログに記録します。トレースは Weave の Web インターフェースで確認できます。 |
関数を @weave.op でラップすると、入力・出力・アプリケーション ロジックのキャプチャが始まり、アプリ内でデータがどのように流れているかをデバッグできるようになります。op を深くネストして、トラッキングしたい関数のツリーを構築できます。これにより、実験中のコードが自動的にバージョン管理され、まだ git にコミットしていないアドホックな変更内容も含めて記録されます。
@weave.op でデコレートされた関数を作成するだけです。
以下の例では、recommend_places_to_visit という関数があり、これは @weave.op でラップされた、特定の都市で訪れるべき場所をおすすめする関数です。
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")
 |
|---|
recommend_places_to_visit 関数を @weave.op でデコレートすると、この関数の入力と出力、および関数内部で行われるすべての LM 呼び出しがトレースされます。 |
実験を行いやすくするために Model を作成する
多くの要素が絡み合っていると、実験を整理するのは困難です。Model クラスを使うと、システムプロンプトや使用しているモデルなど、アプリの実験に関する詳細を記録して整理できます。これにより、アプリのさまざまなバージョンや反復を整理し、比較しやすくなります。
コードのバージョニングや入出力の記録に加えて、Model はアプリケーションの動作を制御する構造化されたパラメーターも記録するため、どのパラメーターが最も効果的だったかを簡単に見つけることができます。Weave Models を serve や Evaluation と組み合わせて使用することもできます。
以下の例では、GroqCityVisitRecommender を使って実験できます。そのいずれかの値を変更するたびに、新しい GroqCityVisitRecommender の バージョン が作成されます。
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"))
 |
|---|
Tracing and versioning your calls using a Model |
任意の weave.Model オブジェクトへの weave リファレンスがあれば、FastAPI サーバーを起動して、そのモデルを serve できます。
 |
|---|
| 任意の WeaveModel の weave リファレンスは、そのモデルのページに移動し、UI からコピーすることで取得できます。 |
次のコマンドをターミナルで実行すると、モデルをサーブできます。
weave serve weave://your_entity/project-name/YourModel:<hash>