메인 콘텐츠로 건너뛰기

Documentation Index

Fetch the complete documentation index at: https://translations.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Colab에서 열기
별도의 설정 없이 Weave에서 OpenAI 모델을 실험해 보고 싶으신가요? LLM Playground를 사용해 보세요.

트레이싱

LLM 애플리케이션의 트레이스를 개발 및 프로덕션 환경에서 모두 중앙 데이터베이스에 저장하는 것은 중요합니다. 이러한 트레이스는 디버깅에 사용하고, 애플리케이션을 개선하는 동안 평가에 사용할 어려운 예시들로 이루어진 데이터셋을 구축하는 데 활용합니다. Weave는 openai Python 라이브러리에 대한 트레이스를 자동으로 캡처할 수 있습니다. 원하는 프로젝트 이름으로 weave.init(<project-name>)을 호출해 캡처를 시작하세요. OpenAI는 언제 import했는지와 상관없이 자동으로 패치됩니다. weave.init()을 호출할 때 W&B 팀을 지정하지 않으면 기본 엔터티가 사용됩니다. 기본 엔터티를 찾거나 업데이트하려면 W&B Models 문서의 User Settings를 참조하세요. 자동 패칭 Weave는 weave.init() 호출 전후에 OpenAI가 import되었는지와 상관없이 OpenAI를 자동으로 패치합니다:
from openai import OpenAI
import weave

weave.init('emoji-bot')  # OpenAI는 자동으로 패치됩니다!

client = OpenAI()
response = client.chat.completions.create(
  model="gpt-4",
  messages=[
    {
      "role": "system",
      "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only."
    },
    {
      "role": "user",
      "content": "How are you?"
    }
  ]
)
명시적 패칭 (선택 사항) 세밀하게 제어하고 싶다면 여전히 명시적으로 패치할 수 있습니다:
import weave

weave.init('emoji-bot')
weave.integrations.patch_openai()  # OpenAI 추적 활성화

from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
  model="gpt-4",
  messages=[
    {"role": "user", "content": "Make me a emoji"}
  ]
)
라이브 트레이스 보기
OpenAI FunctionsOpenAI Assistants의 함수 호출 도구 사용도 함께 캡처합니다.

구조화된 출력

Weave는 OpenAI의 구조화된 출력도 지원합니다. 이는 LLM 응답이 특정 형식을 따르도록 보장해야 할 때 유용합니다.
from openai import OpenAI
from pydantic import BaseModel
import weave

class UserDetail(BaseModel):
    name: str
    age: int

client = OpenAI()
weave.init('extract-user-details')

completion = client.beta.chat.completions.parse(
    model="gpt-4o-2024-08-06",
    messages=[
        {"role": "system", "content": "Extract the user details from the message."},
        {"role": "user", "content": "My name is David and I am 30 years old."},
    ],
    response_format=UserDetail,
)

user_detail = completion.choices[0].message.parsed
print(user_detail)

비동기 지원

Weave는 OpenAI용 비동기 함수(async 함수)도 지원합니다.
from openai import AsyncOpenAI
import weave

client = AsyncOpenAI()
weave.init('async-emoji-bot')

async def call_openai():
    response = await client.chat.completions.create(
        model="gpt-4",
        messages=[
            {
                "role": "system", 
                "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only."
            },
            {
                "role": "user",
                "content": "How are you?"
            }
        ]
    )
    return response

# 비동기 함수를 호출합니다
result = await call_openai()

스트리밍 지원

Weave는 OpenAI의 스트리밍 응답도 지원합니다.
from openai import OpenAI
import weave

client = OpenAI()
weave.init('streaming-emoji-bot')

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {
            "role": "system", 
            "content": "You are AGI. You will be provided with a message, and your task is to respond using emojis only."
        },
        {
            "role": "user",
            "content": "How are you?"
        }
    ],
    stream=True
)

for chunk in response:
    print(chunk.choices[0].delta.content or "", end="")

함수 호출 추적

Weave는 도구를 사용할 때 OpenAI가 수행하는 함수 호출도 추적합니다.
from openai import OpenAI
import weave

client = OpenAI()
weave.init('function-calling-bot')

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the weather in a given location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "The location to get the weather for"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "The unit to return the temperature in"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {
            "role": "user",
            "content": "What's the weather like in New York?"
        }
    ],
    tools=tools
)

print(response.choices[0].message.tool_calls)

Batch API

Weave는 여러 요청을 일괄 처리하기 위한 OpenAI Batch API도 지원합니다.
from openai import OpenAI
import weave

client = OpenAI()
weave.init('batch-processing')

# 배치 파일 생성
batch_input = [
    {
        "custom_id": "request-1",
        "method": "POST",
        "url": "/v1/chat/completions",
        "body": {
            "model": "gpt-4",
            "messages": [{"role": "user", "content": "Hello, how are you?"}]
        }
    },
    {
        "custom_id": "request-2", 
        "method": "POST",
        "url": "/v1/chat/completions",
        "body": {
            "model": "gpt-4",
            "messages": [{"role": "user", "content": "What's the weather like?"}]
        }
    }
]

# 배치 제출
batch = client.batches.create(
    input_file_id="your-file-id",
    endpoint="/v1/chat/completions",
    completion_window="24h"
)

# 배치 결과 조회
completed_batch = client.batches.retrieve(batch.id)

Assistants API

Weave는 대화형 AI 애플리케이션을 구축하기 위한 OpenAI Assistants API도 지원합니다.
from openai import OpenAI
import weave

client = OpenAI()
weave.init('assistant-bot')

# assistant 생성
assistant = client.beta.assistants.create(
    name="Math Assistant",
    instructions="You are a personal math tutor. Answer questions about math.",
    model="gpt-4"
)

# thread 생성
thread = client.beta.threads.create()

# thread에 message 추가
message = client.beta.threads.messages.create(
    thread_id=thread.id,
    role="user",
    content="What is 2+2?"
)

# assistant 실행
run = client.beta.threads.runs.create(
    thread_id=thread.id,
    assistant_id=assistant.id
)

# assistant 응답 가져오기
messages = client.beta.threads.messages.list(thread_id=thread.id)

비용 추적

Weave는 OpenAI API 호출에 대한 비용을 자동으로 추적합니다. Weave UI에서 비용 세부 내역을 확인할 수 있습니다.
비용 추적은 모든 OpenAI 모델에 대해 제공되며, 최신 OpenAI 요금을 기준으로 계산됩니다.

사용자 정의 함수 트레이싱

@weave.op 데코레이터를 사용하여 OpenAI를 사용하는 사용자 정의 함수도 트레이싱할 수 있습니다.
from openai import OpenAI
import weave

client = OpenAI()
weave.init('custom-function-bot')

@weave.op
def generate_response(prompt: str) -> str:
    response = client.chat.completions.create(
        model="gpt-4",
        messages=[
            {
                "role": "user",
                "content": prompt
            }
        ]
    )
    return response.choices[0].message.content

# 이 함수 호출도 트레이싱됩니다
result = generate_response("Hello, how are you?")

다음 단계

이제 OpenAI 트레이싱을 설정했으므로 다음을 수행할 수 있습니다:
  1. Weave UI에서 트레이스 보기: Weave 프로젝트로 이동하여 OpenAI 호출의 트레이스를 확인합니다
  2. 평가 생성: 트레이스를 사용하여 평가 데이터셋을 구성합니다
  3. 성능 모니터링: 지연 시간, 비용 및 기타 메트릭을 추적합니다
  4. 문제 디버깅: 트레이스를 사용하여 LLM 애플리케이션에서 어떤 일이 일어나는지 파악합니다
이러한 주제에 대한 자세한 내용은 평가 가이드모니터링 가이드를 참고하세요.