메인 콘텐츠로 건너뛰기
Weave for Agents는 공개 프리뷰 상태입니다. 정식 출시 전에 특성, API 및 Agents 뷰 UI가 변경될 수 있습니다.
OpenAI Agents SDK는 OpenAI API를 기반으로 에이전트와 멀티 에이전트 워크플로를 구축할 수 있는 경량 프레임워크입니다. Weave는 OpenAI Agents SDK로 구축된 에이전트를 자동으로 트레이스하며, 각 에이전트 호출, 하위 에이전트 핸드오프, 모델 Call, 도구 Call을 포함해 추적합니다. Weave는 캡처한 데이터를 프로젝트의 Agents 뷰에 표시합니다.
Weave TypeScript SDK는 OpenAI Agents SDK의 자동 패칭을 지원하지 않습니다.

Weave로 OpenAI Agents SDK 에이전트 트레이스하기

Weave SDK는 OpenAI Agents SDK와 자동으로 패치되어, 최소한의 설정만으로 에이전트의 트레이스를 캡처할 수 있습니다. 이 가이드에서는 Weave를 초기화한 다음 OpenAI Agents SDK로 구축한 멀티턴 리서치 에이전트를 실행하여, Weave가 Session 전반에서 모든 에이전트 호출, 모델 Call, 도구 Call을 캡처하도록 설정하는 방법을 설명합니다.

사전 요구 사항

시작하기 전에 다음 사항이 준비되어 있는지 확인하세요:

패키지 설치

스크립트에서 Weave 및 OpenAI Agents SDK를 사용할 수 있도록 개발 환경에 다음 패키지를 설치하세요:
pip install weave openai-agents requests

코드에서 Weave 초기화하기

프로젝트에 weave.init를 추가하고 W&B 팀 및 프로젝트 이름을 지정한 다음, 평소와 같은 방식으로 에이전트를 구축하세요. 다음 코드는 wikipedia_search 함수 도구와 Research assistant 에이전트를 정의한 뒤, Weave가 트레이스를 캡처하는 동안 OpenAI Agents SDK Runner를 통해 세 개의 질문을 실행합니다.
import asyncio
import requests
import weave
from agents import Agent, Runner, function_tool

weave.init("<your-team>/<your-project-name>")

@function_tool
def wikipedia_search(query: str) -> str:
    """Search Wikipedia for a topic and return its title and intro paragraph."""
    r = requests.get(
        "https://en.wikipedia.org/w/api.php",
        params={
            "action": "query", "generator": "search", "gsrsearch": query, "gsrlimit": 1,
            "prop": "extracts", "exintro": True, "explaintext": True, "format": "json",
        },
        headers={"User-Agent": "weave-demo"},
    ).json()
    page = next(iter(r["query"]["pages"].values()))
    return f"{page['title']}: {page['extract']}"

agent = Agent(
    name="Research assistant",
    instructions=(
        "You are a research assistant. Use the wikipedia_search tool to look up "
        "topics when needed, and cite the article titles you used."
    ),
    tools=[wikipedia_search],
)

async def main():
    history = []
    for question in [
        "Who founded Anthropic?",
        "What is Claude (the AI assistant)?",
        "Summarize what we discussed in one sentence.",
    ]:
        history.append({"role": "user", "content": question})
        print(f"USER: {question}")
        result = await Runner.run(agent, input=history)
        print(f"AGENT: {result.final_output}\n")
        history = result.to_input_list()

asyncio.run(main())
이 예시에서는 하나의 대화에서 세 번의 turn을 실행합니다. 처음 두 turn은 Wikipedia 조회를 트리거하고, 세 번째 turn은 앞선 대화 컨텍스트를 사용해 도구 Call 없이 요약을 생성합니다. 각 Runner.run 호출은 이전 결과의 입력 목록을 다음 요청으로 다시 전달해 대화를 이어갑니다.

Agents 뷰에서 에이전트 트레이스 확인하기

스크립트가 실행된 후 Weave에서 캡처된 활동을 검토할 수 있습니다. weave.init()가 실행되면 프로젝트 링크가 출력됩니다. Agents 뷰를 열어 다음 항목을 확인하세요.
  • Research assistant에 해당하는 Agents 탭의 행
  • 세 개의 turn이 포함된 Session
  • 중첩된 모델 Calls 및 도구 Calls와 함께 invoke_agent span으로 렌더링된 각 turn
  • 각 step의 전체 입력, 모델, 출력, token 사용량, 그리고 Wikipedia 결과
Weave에서 Agents 데이터를 보는 방법에 대한 자세한 내용은 에이전트 활동 보기를 참조하세요.