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

# Groq

> Weave로 Groq LPU Inference를 추적하고 모니터링하여 LLM 애플리케이션의 모델 call, 성능 메트릭, 함수 체인을 수집합니다.

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

<Note>
  아무 설정 없이 Weave에서 Groq 모델을 실험해 보고 싶으신가요? [LLM 플레이그라운드](../tools/playground)를 사용해 보세요.
</Note>

[Groq](https://groq.com/)은 빠른 AI Inference를 제공하는 AI 인프라 기업입니다. Groq의 LPU Inference Engine은 연산 속도, 품질, 에너지 효율을 위해 설계된 하드웨어 및 소프트웨어 플랫폼입니다. Weave는 Groq Chat Completion call을 자동으로 추적하고 로깅합니다.

이 페이지에서는 Weave를 사용해 Groq Chat Completion call을 트레이스하고, 자체 함수를 Weave op로 래핑하고, `Model` 객체를 사용해 실험을 구성하는 방법을 설명합니다.

<div id="tracing">
  ## 트레이싱
</div>

개발 중이든 프로덕션 환경이든, 언어 모델 애플리케이션의 트레이스를 한곳에 저장해 두는 것은 중요합니다. 이러한 트레이스는 애플리케이션을 디버깅하는 데 도움이 되며, 애플리케이션 개선을 위한 데이터셋으로도 활용할 수 있습니다.

Weave는 [Groq](https://groq.com/)의 트레이스를 자동으로 수집합니다. 추적을 시작하려면 `weave.init(project_name="<your-wandb-project-name>")`를 호출한 다음, 평소처럼 라이브러리를 사용하세요. `<>`로 묶인 값은 실제 값으로 바꾸세요.

```python lines theme={null}
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/wb-21fd5541/IuXGrpyeFw4WzHgb/weave/guides/integrations/imgs/groq/groq_weave_dasboard.png?fit=max&auto=format&n=IuXGrpyeFw4WzHgb&q=85&s=4bd4acefdc40983faa3353d8f95962ba" alt="추적된 LLM call, 성능 메트릭, 트레이스 정보가 표시된 Groq Weave 대시보드" width="2880" height="1800" data-path="weave/guides/integrations/imgs/groq/groq_weave_dasboard.png" /> |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 이제 Weave가 Groq 라이브러리를 통해 수행되는 모든 LLM call을 추적하고 로깅합니다. Weave 웹 인터페이스에서 해당 트레이스를 확인할 수 있습니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

<div id="track-your-own-ops">
  ## 직접 ops 추적하기
</div>

함수를 `@weave.op`으로 감싸 입력, 출력, 앱 로직을 캡처하면 앱에서 데이터가 어떻게 흐르는지 디버그할 수 있습니다. ops를 깊게 중첩해 추적하려는 함수 트리를 구성할 수 있습니다. 또한 실험하는 동안 코드 버전이 자동으로 관리되어 아직 git에 커밋되지 않은 임시 세부 정보까지 캡처합니다.

[`@weave.op`](/ko/weave/guides/tracking/ops)으로 데코레이트된 함수를 만드세요.

다음 예시에서 `recommend_places_to_visit` 함수는 `@weave.op`으로 감싸져 있으며 도시에서 방문할 장소를 추천합니다.

```python lines theme={null}
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/wb-21fd5541/IuXGrpyeFw4WzHgb/weave/guides/integrations/imgs/groq/groq_weave_tracing.png?fit=max&auto=format&n=IuXGrpyeFw4WzHgb&q=85&s=cca562304a1bc5e9a7e94a4f5ec96545" alt="op 데코레이터, 함수 call 계층 구조, 트레이스 세부 정보가 표시된 Groq Weave 트레이싱 인터페이스" width="2880" height="1800" data-path="weave/guides/integrations/imgs/groq/groq_weave_tracing.png" /> |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `recommend_places_to_visit` 함수에 `@weave.op`를 데코레이션하여 입력, 출력, 그리고 함수 내부에서 발생하는 모든 LM call을 트레이스하세요.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |

<div id="create-a-model-for-easier-experimentation">
  ## 더 쉽게 실험할 수 있도록 `Model` 만들기
</div>

관리해야 할 요소가 많으면 실험을 체계적으로 정리하기 어렵습니다. [`Model`](../core-types/models) 클래스를 사용하면 시스템 프롬프트나 사용 중인 모델처럼 앱 실험의 세부 정보를 기록하고 정리할 수 있습니다. 이렇게 하면 앱의 여러 반복 버전을 정리하고 비교하기가 쉬워집니다.

코드를 버전 관리하고 입력과 출력을 기록하는 것에 더해, [`Model`](../core-types/models)은 애플리케이션의 동작을 제어하는 구조화된 매개변수도 기록하므로 어떤 매개변수가 가장 효과적이었는지 찾는 데 도움이 됩니다. Weave Models는 `serve` 및 [`Evaluation`](../core-types/evaluations)s와 함께 사용할 수도 있습니다.

다음 예시에서는 `GroqCityVisitRecommender`를 실험해 볼 수 있습니다. 이 항목들 중 하나를 변경할 때마다 `GroqCityVisitRecommender`의 새로운 *version*이 생성됩니다.

```python lines theme={null}
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/wb-21fd5541/IuXGrpyeFw4WzHgb/weave/guides/integrations/imgs/groq/groq_weave_model.png?fit=max&auto=format&n=IuXGrpyeFw4WzHgb&q=85&s=06651ae94121f99d4d9c33d5c1c3b640" alt="모델 버전, 트레이스 이력 및 성능 메트릭이 표시된 Groq Weave Model 트레이스 및 버전 관리 인터페이스" width="2880" height="1800" data-path="weave/guides/integrations/imgs/groq/groq_weave_model.png" /> |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| [`Model`](../core-types/models)을 사용해 Call을 트레이스하고 버전 관리하세요.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |

<div id="serve-a-weave-model">
  ### Weave Model 서빙
</div>

버전이 지정된 `Model`이 있으면 이를 테스트용이나 다운스트림 애플리케이션용 서비스로 배포할 수 있습니다. 임의의 `weave.Model` 객체에 대한 Weave 레퍼런스가 있으면 FastAPI 서버를 실행해 이를 [서빙](https://docs.wandb.ai/weave/guides/tools/serve)할 수 있습니다.

| [<img src="https://mintcdn.com/wb-21fd5541/IuXGrpyeFw4WzHgb/weave/guides/integrations/imgs/groq/groq_weave_model_version.png?fit=max&auto=format&n=IuXGrpyeFw4WzHgb&q=85&s=620630b94615c20abacba70f1d53f9bd" alt="dspy_weave_model_serve.png" width="2880" height="1800" data-path="weave/guides/integrations/imgs/groq/groq_weave_model_version.png" />](https://wandb.ai/geekyrakshit/groq-test/weave/objects/GroqCityVisitRecommender/versions/6O1xPTJ9yFx8uuCjJAlI7KgcVYxXKn7JxfmVD9AQT5Q) |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 모델로 이동한 다음 UI에서 복사하면 모든 `weave.Model`의 Weave 레퍼런스를 확인할 수 있습니다.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |

터미널에서 다음 명령어로 모델을 서빙하세요:

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