ADK-Rust v2 · CodeAct 에이전트

모델이 쓰도록 하세요 작업 흐름.

CodeAct는 AI 에이전트가 짧은 프로그램을 작성해 조치를 취하는 방식이다. 해당 프로그램은 승인된 도구만 ​​호출하고 그 결과를 일반 코드와 결합한 후 ADK-Rust 런타임을 통해 답변을 반환합니다.

cart_assistant.py
cart = call_tool("fetch_cart", args)
subtotal = sum(item["price"] * item["qty"]
               for item in cart["items"])
rate = call_tool("tax_rate", region)
total = subtotal * (1 + rate)
일시정지 · 도구 · 재개
쓰기
실행
반환
total = $141.57 · 3 cart lines

여기서 시작하세요

CodeAct 에이전트란 무엇입니까?

CodeAct 에이전트는 여러 승인된 도구가 함께 작동하는 방식을 결정하기 위해 executable 코드를 작성하는 AI 에이전트입니다. 애플리케이션은 제어된 인터프리터에서 해당 코드를 실행하고 모든 외부 작업에 대한 책임을 유지합니다.

기존 도구 호출

모델은 한 번에 하나의 작업을 선택합니다.

  1. 01모델에게 어떤 도구를 호출할지 물어보세요.
  2. 02해당 도구를 실행하고 결과를 모델로 다시 보냅니다.
  3. 03모델에게 다음에 무엇을 할지 물어보고 반복하세요.
모델 → fetch_cart → 모델 → tax_rate → 모델 → 답변

CodeAct

모델은 전체 절차를 작성합니다.

  1. 01사용 가능한 도구를 사용하여 모델에게 짧은 프로그램을 요청하세요.
  2. 02프로그램을 실행하고 실제 도구에 도달할 때만 일시 중지합니다.
  3. 03프로그램이 응답을 반환할 때까지 도구 결과를 사용하여 재개합니다.
모델 → 하나의 스크립트 ← 승인된 도구 → 답변

간단한 비유

기존의 도구 호출은 동료에게 계산기 버튼 하나를 누르고 화면을 보고한 후 다음 지시를 기다리라고 요청하는 것과 같습니다. CodeAct는 동료에게 작은 스프레드시트 수식을 작성할 수 있는 권한을 부여하는 것과 같습니다. 허용되는 입력은 동일하게 유지되지만 계산에는 변수, 조건, 루프 및 여러 단계가 포함될 수 있습니다.

이 페이지에서 볼 수 있는 8개의 단어

모델

스크립트를 작성하는 LLM입니다.

대리인

목표를 행동과 결과로 바꾸는 구성 요소입니다.

도구

비즈니스 데이터 또는 시스템에 접근하는 승인된 Rust 기능입니다.

스크립트

현재 에이전트 차례를 위해 작성된 쇼트 프로그램입니다.

런타임

executes하고 스크립트를 일시 중지하는 인터프리터입니다.

관찰

다음 차례에 대해 모델에 반환된 결과 또는 오류입니다.

체크포인트

나중에 계속할 수 있는 저장된 일시 중지 프로그램입니다.

최종 결과

입력한 답변이 신청서에 반환되었습니다.

아이디어는 어디서 나왔는지

CodeAct는 에이전트의 행동 언어에 대한 연구 질문으로 시작되었습니다.

대부분의 초기 도구 사용 에이전트는 작업을 자연어 또는 도구 이름과 인수가 포함된 JSON 개체로 표현했습니다. 연구원 Xingyao Wang, Yangyi Chen, Lifan Yuan, Yizhe Zhang, Yunzhu Li, Hao Peng 및 Heng Ji는 다음과 같이 질문했습니다. executable Python는 보다 표현력이 뛰어난 작업 형식입니다..

그들의 논문, "실행 가능한 코드 작업으로 더 나은 LLM 에이전트 유도"는 2024년 2월에 출시되었으며 ICML 2024에 나타났습니다. evaluated 17개 언어 모델을 API-Bank 및 해당 논문의 M³ToolEval 벤치마크에 적용했습니다. 저자는 코드 작업이 테스트된 텍스트 및 JSON 작업 형식보다 최대 20% 더 높은 성공률을 달성했다고 보고했습니다.

논문도 소개됐다. CodeActInstruct, 7,000개의 다중 회전 상호 작용으로 구성된 데이터 세트 및 execute 코드로 미세 조정된 CodeActAgent 모델을 사용하여 결과를 관찰하고 실패한 프로그램을 수정하고 대화를 계속합니다. 본 논문의 과제에 대한 연구결과입니다. 이는 모든 제품에 대해 코드 작업이 자동으로 더 좋아진다는 의미는 아닙니다.

CodeAct를 사용하는 이유는 무엇입니까?

CodeAct

CodeAct는 에이전트가 도구와 계산을 결합해야 할 때 강력합니다. 이는 애플리케이션이 도구 및 런타임 경계를 유지하면서 논리를 표현하기 위한 친숙한 언어를 모델에 제공합니다.

01

여러 도구 구성

스크립트는 여러 승인된 도구를 호출하고 하나의 결과를 다음 단계로 직접 전달할 수 있습니다.

02

실제 제어 흐름 사용

루프, 조건, 변수, 정렬, 필터링 및 산술은 코드로 직접 표현됩니다.

03

모델 왕복 횟수 감소

여러 차례 도구를 선택해야 하는 작업이 생성된 하나의 스크립트로 표현되는 경우도 있습니다.

04

중간 데이터를 로컬에 유지

런타임은 모델 기록에 속하는 항목을 결정하기 전에 대규모 도구 결과를 필터링하거나 집계할 수 있습니다.

05

executable 실수 수정

구문 오류, 예외 또는 실패한 어설션은 모델이 다음 스크립트를 수정하는 데 사용하는 관찰이 될 수 있습니다.

06

작업 검사

개발자는 생성된 프로그램, 도구 호출, 출력 및 체크포인트를 execution 트레일로 읽을 수 있습니다.

절충안

언제 피해야 합니까?

간단한 동작 하나

요청이 하나의 비즈니스 작업에 명확하게 매핑되면 일반적인 LlmAgent 도구 호출이 더 쉽습니다.

약한 코드 생성

유효한 코드를 작성하는 데 어려움을 겪는 모델은 구조화된 도구 호출보다 더 많은 수정 회전이 필요할 수 있습니다.

안전한 런타임 없음

생성된 코드에는 명시적인 액세스 및 리소스 제한이 있는 인터프리터가 필요합니다. 제한되지 않은 eval 또는 exec에 전달하지 마십시오.

전체 소프트웨어 개발

목표가 리포지토리 편집, 셸 명령 실행 또는 개발 작업 공간 운영인 경우 CodingAgent를 사용하세요.

ADK-Rust가 CodeAct를 구현하는 방법

CodeAct는 ADK-Rust 런타임 내에서 작동합니다.

CodeActAgent 함께 있는 에이전트 유형입니다. LlmAgent. 당신은 그것에 모델을 제공합니다 CodeRuntime및 Rust 도구. 그런 다음 다른 ADK-Rust 에이전트에서 사용하는 것과 동일한 Runner, 세션, 이벤트, 콜백, 권한 부여 및 출력 시스템을 통해 실행합니다.

1. 모델

신뢰할 수 있는 코드를 생성할 수 있는 ADK-Rust 모델 공급자를 선택하세요.

2. CodeRuntime

Monty 지원 Python 런타임을 사용하거나 언어에 구애받지 않는 CodeRuntime 특성을 구현하세요.

3. Rust 도구

입력된 도구를 등록합니다. 스크립트는 해당 호출에 제공된 도구에만 접근할 수 있습니다.

4. Runner

사용자 및 세션으로 에이전트를 실행한 다음 일반 유형의 ADK-Rust 이벤트를 사용합니다.

5. 세션

승인 시 체크포인트를 유지하거나 장기 실행 도구가 프로그램을 일시 중지합니다.

6. 컨트롤

확인, 재시도, 시간 초과, 콜백, 가드레일, 검증된 출력을 적용합니다.

가장 빠른 작업 시작

체크인 예제를 먼저 실행하세요.

결정론적 모델, 실제 Monty Python 인터프리터, 두 개의 Rust 도구, 메모리 내 세션 및 ADK-Rust Runner를 사용합니다. 모델 API 키가 필요하지 않습니다.

Monty 어댑터는 현재 실험적인 Git 종속성이며 Rust 1.95 이상이 필요하므로 예제에는 자체 도구 체인 파일이 포함됩니다.

터미널
git clone https://github.com/zavora-ai/adk-rust.git
cd adk-rust/examples/codeact_monty_agent

# This example selects Rust 1.95 automatically.
cargo run
검증된 출력
=== ADK-Rust CodeAct × Monty (Python) example ===

[cart_assistant]
{
  "lines": 3,
  "region": "CA",
  "subtotal": 132.0,
  "tax_rate": 0.0725,
  "total": 141.57,
  "user": "u-42"
}

Done.

건축

스크립트는 에이전트 시스템 내부에서 실행됩니다.

이 모델은 executable 논리를 제안합니다. CodeRuntime는 해당 논리가 어떻게 진행되는지 제어합니다. ADK-Rust는 애플리케이션이 보는 모든 외부 작업, 내구성 있는 체크포인트 및 이벤트를 소유합니다.

ADK-Rust CodeAct 아키텍처요청은 Runner 및 CodeAct 에이전트를 통해 코드 런타임으로 이동합니다. 도구 호출은 런타임 정책 및 세션 체크포인트가 execution을 제어하는 ​​동안 ADK-Rust로 다시 교차됩니다.하나의 요청, 하나의 executable 계획, 모든 경계에서 제어실선 화살표는 요청과 결과를 전달합니다. 점선 화살표는 정지, 정책, 내구성 상태를 나타냅니다.제품사용자 요청Runner세션 + 컨텍스트CodeActAgent모델 ⇔ 스크립트 루프CodeRuntime시작 · 일시 정지 · 재개ScriptOutput결과 · 관찰 · 전송ADK-Rust 도구인증 · 재시도 · 콜백세션 상태내구성 있는 체크포인트런타임 정책파일 · 환경 · 제한call_tool는 통역사를 일시 중지합니다. 호스트가 통화를 해결하고 동일한 지속을 재개합니다.

모델

이 호출에 사용할 수 있는 도구와 런타임 브리핑을 사용하여 스크립트를 작성합니다.

CodeRuntime

스크립트를 단계별로 실행하고 호출, 완료, stdout 및 스크립트 오류를 노출합니다.

ADK-Rust 호스트

권한 부여 및 컨텍스트를 사용하여 도구를 실행하고 상태를 유지하며 최종 결과를 스트리밍합니다.

소스 지원 execution 연습

사례 연구: CodeAct 한 차례에 장바구니 가격을 책정합니다.

이는 ADK-Rust 저장소의 결정론적 CodeAct × Monty 예제를 따릅니다. 각 경계를 선택하여 시스템의 어느 부분이 작동 중인지, 다음 부분에 무엇이 표시되는지 확인하세요.

Runner

요청은 ADK-Rust를 입력합니다.

Runner는 CodeAct 에이전트가 시작되기 전에 사용자, 세션, 호출 컨텍스트, 콜백 및 사용 가능한 도구를 연결합니다.

가시적 신호

CA 세금을 포함하여 카트 u-42의 총액은 얼마입니까?

16

올바른 에이전트 형태 선택

CodeAct에는 특정 직업이 있습니다.

모델이 작품을 프로그램으로 좀 더 명확하게 표현할 수 있을 때 사용하세요. ADK-Rust는 또한 대화 도구 사용 및 전체 소프트웨어 개발 환경을 위한 에이전트 형태를 제공합니다.

LlmAgent

대화식으로 도구를 선택하고 호출하세요.

가장 적합한 대상: 질문, 대화, 고립된 비즈니스 활동 및 자연스러운 핸드오프.

모델 → 도구 → 모델

CodeActAgent

하나의 executable 계획으로 도구와 논리를 구성합니다.

가장 적합한 대상: 분석, 데이터 변환, 일괄 작업, 계산 및 조건부 흐름.

모델 → 스크립트 ← 도구 → 결과

CodingAgent

소프트웨어 개발 하네스 내부에서 작업하세요.

가장 적합한 대상: 리포지토리 편집, 셸 명령, 빌드, 테스트, 패치 및 코딩 에이전트 프로토콜.

에이전트 ⇔ 작업 공간 + 셸

Monty 런타임

생성된 코드에 명확한 운영 경계를 제공하십시오.

ADK-Rust의 현재 Python 어댑터는 프로세스 내에서 Monty를 실행합니다. 호스트는 execution이 시작되기 전에 스크립트가 무엇을 읽고, 쓰고, 알고, 소비할 수 있는지 결정합니다.

Monty는 아직 실험적입니다. 현재 고정된 Git 종속성이며 Rust 1.95+가 필요합니다. 어댑터는 Monty를 crates.io에서 사용할 수 있을 때까지 자체 상자에 보관됩니다.

기본 샌드박스

파일 시스템에 액세스할 수 없으며 환경이 비어 있습니다. 네트워크 및 하위 프로세스 작업에는 Monty 표면이 없습니다.

명시적 마운트

선택한 호스트 디렉터리를 가상 경로에 매핑하고 각각에 대해 읽기 전용 또는 읽기-쓰기 액세스를 선택합니다.

리소스 제한

모든 발전에 대해 시간 제한과 메모리 제한을 설정하십시오. 직렬화된 연속은 재개될 때 해당 제한을 유지합니다.

하나의 도구 형태

스크립트는 call_tool(name, args)를 호출합니다. 정확한 명명된 인수는 직렬화 후에도 유지되며 ADK-Rust에서 중앙 집중식으로 바인딩됩니다.

통제된 환경

작업에 필요한 환경 값만 노출합니다. 호스트 프로세스 비밀은 자동으로 상속되지 않습니다.

눈에 보이는 실패

구문 오류 및 예외는 수정 가능한 스크립트 피드백으로 모델에 반환됩니다. 호스트 런타임 오류로 인해 실행이 중지됩니다.

내구성이 뛰어난 execution

일시 중지된 프로그램은 지속 가능한 에이전트 상태가 될 수 있습니다.

확인 제한 및 장기 실행 도구는 답변이 존재하기 전에 요청을 종료해야 할 수도 있습니다. CodeAct는 일시 중지된 인터프리터, 해당 기록 및 보류 중인 호출을 세션에 스냅샷하므로 동일한 코드 줄에서 다른 호출을 계속할 수 있습니다.

01

이전에 저장

외부 도구 실행이 허용되기 전에 계속 진행하세요.

02

해결

보류 중인 도구 결과를 실행, 승인, 거부하거나 기다립니다.

03

다음 이후에 저장

복구 시 완료된 호출을 반복하지 않도록 반환된 값을 유지합니다.

04

이력서

체크포인트를 로드하고 호출 경계에서 동일한 스크립트를 계속합니다.

개발자 책임: 외부 부작용 이후에 체크포인트 이후 저장 이전에 충돌이 발생하면 해당 도구가 다시 실행될 수 있습니다. 비멱등성 도구에 멱등성 키나 다른 중복 작업 보호 장치를 제공합니다.

구현

네 부분이 완전한 에이전트를 정의합니다.

모델을 선택하고, CodeRuntime를 제공하고, 스크립트가 호출할 수 있는 도구를 등록하고, 일반 ADK-Rust Runner를 통해 에이전트를 실행합니다.

ADK-Rust v2
use std::sync::Arc;
use adk_agent::codeact::CodeActAgent;
use adk_codeact_monty::MontyRuntime;

let runtime = MontyRuntime::builder()
    .environ_var("CART_USER", "u-42")
    .environ_var("TAX_REGION", "CA")
    .system_clock(true)
    .build();

let agent = CodeActAgent::builder()
    .name("cart_assistant")
    .model(model)
    .runtime(Arc::new(runtime))
    .instruction("Price the cart by writing Python.")
    .tool(Arc::new(fetch_cart))
    .tool(Arc::new(tax_rate))
    .output_key("priced_cart")
    .build()?;

CodeAct로 빌드

다단계 도구 대화를 하나의 읽기 가능한 프로그램으로 전환합니다.

결정론적 예제로 시작하여 모든 일시 중지 및 재개를 검사한 다음 제품이 이미 사용하고 있는 모델과 도구를 연결하세요.