> ## 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.

# 사용 예시

> 실용적인 코드 예시를 통해 Serverless Inference 사용 방법을 알아보세요


이 예시에서는 Serverless Inference를 Weave와 함께 사용하여 트레이싱, 평가, 비교를 수행하는 방법을 보여줍니다. 예시를 따라 하면서 모델 Call을 계측해 동작을 관찰하고, 데이터셋을 기준으로 성능을 측정하고, 여러 모델을 나란히 비교하는 방법을 익혀 보세요.

다음 섹션에서는 기본 트레이싱 예시와 좀 더 고급 평가 워크플로를 차례로 살펴봅니다. 예시를 실행하기 전에 먼저 [사전 요구 사항](/ko/products/inference/serverless/prerequisites)을 완료하세요.

<h2 id="basic-example-trace-llama-31-8b-with-weave">
  기본 예시: Llama 3.1 8B를 Weave로 트레이스하기
</h2>

이 예제는 Llama 3.1 8B 모델에 프롬프트를 전송하고 Weave로 호출을 트레이스하는 방법을 보여줍니다. 트레이싱은 LLM Call의 전체 입력과 출력을 캡처하고, 성능을 모니터링하며, Weave UI에서 결과를 분석할 수 있게 합니다.

<Tip>
  [Weave의 트레이싱](/ko/products/wandb/weave/guides/tracking/tracing)에 대해 자세히 알아보세요.
</Tip>

이 예제에서는:

* `@weave.op()`로 데코레이션된 함수를 정의하여 Chat Completion 요청을 만듭니다.
* Weave는 트레이스를 기록하고 W\&B entity 및 프로젝트에 연결합니다.
* Weave는 함수를 자동으로 트레이스하여 입력, 출력, latency, 메타데이터를 로깅합니다.
* 결과는 터미널에 출력되고, 트레이스는 [Forge](https://forge.coreweave.com/wandb)의 **트레이스** 탭에 표시됩니다.

```python theme={"system"}
import weave
import openai

# 트레이싱을 위해 Weave 팀과 프로젝트를 설정합니다
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

client = openai.OpenAI(
    base_url='https://api.inference.wandb.ai/v1',

    # https://forge.coreweave.com/settings 에서 API 키를 생성합니다
    api_key="[YOUR-API-KEY]",

    # 선택: 사용량 추적을 위한 팀과 프로젝트
    project="wandb/inference-demo",
)

# Weave에서 모델 Call을 트레이스합니다
@weave.op()
def run_chat():
    response = client.chat.completions.create(
        model="meta-llama/Llama-3.1-8B-Instruct",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Tell me a joke."}
        ],
    )
    return response.choices[0].message.content

# 트레이스된 call을 실행하고 로깅합니다
output = run_chat()
print(output)
```

코드 실행 후, 다음 방법 중 하나를 사용하여 Weave에서 트레이스를 확인하세요:

* 터미널에 출력된 링크를 클릭하세요. 예: `https://wandb.ai/[YOUR-TEAM]/[YOUR-PROJECT]/r/call/01977f8f-839d-7dda-b0c2-27292ef0e04g`.
* [Forge](https://forge.coreweave.com/wandb)로 이동하여 **트레이스** 탭을 선택하세요.

기본 트레이스가 작동하면, 개별 Call을 검사하는 것 이상의 풍부한 워크플로로 진행할 수 있습니다.

<h2 id="advanced-example-use-weave-evaluations-and-leaderboards">
  고급 예시: Weave Evaluations 및 리더보드 사용
</h2>

model Call을 트레이싱하는 것 외에도, 성능을 평가하고 리더보드를 게시할 수 있습니다. 이 예제는 질문-답변 데이터셋에서 두 모델을 비교하여 Llama 3.1 8B와 DeepSeek V3.1이 동일한 프롬프트에 대해 어떻게 수행하는지 보여줍니다.

```python theme={"system"}
import os
import asyncio
import openai
import weave
from weave.flow import leaderboard
from weave.trace.ref_util import get_ref

# 트레이싱을 위해 Weave 팀과 프로젝트를 설정합니다
weave.init("[YOUR-TEAM]/[YOUR-PROJECT]")

dataset = [
    {"input": "What is 2 + 2?", "target": "4"},
    {"input": "Name a primary color.", "target": "red"},
]

@weave.op
def exact_match(target: str, output: str) -> float:
    return float(target.strip().lower() == output.strip().lower())

class WBInferenceModel(weave.Model):
    model: str

    @weave.op
    def predict(self, prompt: str) -> str:
        client = openai.OpenAI(
            base_url="https://api.inference.wandb.ai/v1",
            # https://forge.coreweave.com/settings 에서 API 키를 생성하세요
            api_key="[YOUR-API-KEY]",
            # 선택: 사용량 추적을 위한 팀과 프로젝트
            project="[YOUR-TEAM]/[YOUR-PROJECT]",
        )
        resp = client.chat.completions.create(
            model=self.model,
            messages=[{"role": "user", "content": prompt}],
        )
        return resp.choices[0].message.content

llama = WBInferenceModel(model="meta-llama/Llama-3.1-8B-Instruct")
deepseek = WBInferenceModel(model="deepseek-ai/DeepSeek-V3.1")

def preprocess_model_input(example):
    return {"prompt": example["input"]}

evaluation = weave.Evaluation(
    name="QA",
    dataset=dataset,
    scorers=[exact_match],
    preprocess_model_input=preprocess_model_input,
)

async def run_eval():
    await evaluation.evaluate(llama)
    await evaluation.evaluate(deepseek)

asyncio.run(run_eval())

spec = leaderboard.Leaderboard(
    name="Inference Leaderboard",
    description="Compare models on a QA dataset",
    columns=[
        leaderboard.LeaderboardColumn(
            evaluation_object_ref=get_ref(evaluation).uri(),
            scorer_name="exact_match",
            summary_metric_path="mean",
        )
    ],
)

weave.publish(spec)
```

이 코드를 실행한 후, [Forge](https://forge.coreweave.com/wandb)에서 W\&B 계정으로 이동하여 다음을 수행하세요:

* **트레이스** 탭을 선택하여 [트레이스 뷰](/ko/products/wandb/weave/guides/tracking/tracing)로 이동하세요.
* **Evals** 탭을 선택하여 [모델 평가 뷰](/ko/products/wandb/weave/guides/core-types/evaluations)로 이동하세요.
* **Leaders** 탭을 선택하여 [생성된 리더보드 뷰](/ko/products/wandb/weave/guides/core-types/leaderboards)로 이동하세요.

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/inference/_media/inference-advanced-evals.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a86744b0e39f4daaf96ea6e05272c095" alt="모델 평가 뷰" width="2912" height="1194" data-path="products/inference/_media/inference-advanced-evals.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/coreweave-dbfa0e8d/3Dv_sw2eg8feUJlx/products/inference/_media/inference-advanced-leaderboard.png?fit=max&auto=format&n=3Dv_sw2eg8feUJlx&q=85&s=a0d8acb108352204e2117f682aae936f" alt="리더보드 뷰" width="2912" height="1194" data-path="products/inference/_media/inference-advanced-leaderboard.png" />
</Frame>

두 예제를 모두 완료하면, 트레이스된 모델 Call 세트, 게시된 평가, 그리고 데이터셋의 모델을 비교하는 리더보드가 생성됩니다.

<h2 id="next-steps">
  다음 단계
</h2>

Serverless Inference를 더 알아보려면 다음을 사용해 보세요:

* 사용 가능한 모든 메서드는 [API 레퍼런스](/ko/products/inference/serverless/api-reference)를 살펴보세요.
* [UI](/ko/products/inference/serverless/ui-guide)에서 모델을 사용해 보세요.


## Related topics

- [Serverless Inference](/ko/products/wandb/weave/guides/integrations/inference.md)
