메인 콘텐츠로 건너뛰기
Colab에서 열기
아무 설정 없이 Weave에서 Groq 모델을 실험해 보고 싶으신가요? LLM 플레이그라운드를 사용해 보세요.
Groq은 빠른 AI Inference를 제공하는 AI 인프라 기업입니다. Groq의 LPU Inference Engine은 연산 속도, 품질, 에너지 효율을 위해 설계된 하드웨어 및 소프트웨어 플랫폼입니다. Weave는 Groq Chat Completion call을 자동으로 추적하고 로깅합니다. 이 페이지에서는 Weave를 사용해 Groq Chat Completion call을 트레이스하고, 자체 함수를 Weave op로 래핑하고, Model 객체를 사용해 실험을 구성하는 방법을 설명합니다.

트레이싱

개발 중이든 프로덕션 환경이든, 언어 모델 애플리케이션의 트레이스를 한곳에 저장해 두는 것은 중요합니다. 이러한 트레이스는 애플리케이션을 디버깅하는 데 도움이 되며, 애플리케이션 개선을 위한 데이터셋으로도 활용할 수 있습니다. 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",
)
추적된 LLM call, 성능 메트릭, 트레이스 정보가 표시된 Groq Weave 대시보드
이제 Weave가 Groq 라이브러리를 통해 수행되는 모든 LLM call을 추적하고 로깅합니다. Weave 웹 인터페이스에서 해당 트레이스를 확인할 수 있습니다.

직접 ops 추적하기

함수를 @weave.op으로 감싸 입력, 출력, 앱 로직을 캡처하면 앱에서 데이터가 어떻게 흐르는지 디버그할 수 있습니다. ops를 깊게 중첩해 추적하려는 함수 트리를 구성할 수 있습니다. 또한 실험하는 동안 코드 버전이 자동으로 관리되어 아직 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")
op 데코레이터, 함수 call 계층 구조, 트레이스 세부 정보가 표시된 Groq Weave 트레이싱 인터페이스
recommend_places_to_visit 함수에 @weave.op를 데코레이션하여 입력, 출력, 그리고 함수 내부에서 발생하는 모든 LM call을 트레이스하세요.

더 쉽게 실험할 수 있도록 Model 만들기

관리해야 할 요소가 많으면 실험을 체계적으로 정리하기 어렵습니다. Model 클래스를 사용하면 시스템 프롬프트나 사용 중인 모델처럼 앱 실험의 세부 정보를 기록하고 정리할 수 있습니다. 이렇게 하면 앱의 여러 반복 버전을 정리하고 비교하기가 쉬워집니다. 코드를 버전 관리하고 입력과 출력을 기록하는 것에 더해, Model은 애플리케이션의 동작을 제어하는 구조화된 매개변수도 기록하므로 어떤 매개변수가 가장 효과적이었는지 찾는 데 도움이 됩니다. Weave Models는 serveEvaluations와 함께 사용할 수도 있습니다. 다음 예시에서는 GroqCityVisitRecommender를 실험해 볼 수 있습니다. 이 항목들 중 하나를 변경할 때마다 GroqCityVisitRecommender의 새로운 version이 생성됩니다.
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"))
모델 버전, 트레이스 이력 및 성능 메트릭이 표시된 Groq Weave Model 트레이스 및 버전 관리 인터페이스
Model을 사용해 Call을 트레이스하고 버전 관리하세요.

Weave Model 서빙

버전이 지정된 Model이 있으면 이를 테스트용이나 다운스트림 애플리케이션용 서비스로 배포할 수 있습니다. 임의의 weave.Model 객체에 대한 Weave 레퍼런스가 있으면 FastAPI 서버를 실행해 이를 서빙할 수 있습니다.
dspy_weave_model_serve.png
모델로 이동한 다음 UI에서 복사하면 모든 weave.Model의 Weave 레퍼런스를 확인할 수 있습니다.
터미널에서 다음 명령어로 모델을 서빙하세요:
weave serve weave://your_entity/project-name/YourModel:<hash>