Hyperlight CodeAct

Hyperlight, Agent Framework'te CodeAct'in şu anda belgelenmiş arka ucudur. Yalıtılmış bir korumalı alan çalışma zamanı tarafından desteklenen bir execute_code aracı sunar ve call_tool(...) aracılığıyla sağlayıcıya ait konak araçlarını çağırabilir.

Desen düzeyine genel bakış için bkz. CodeAct.

Neden Hyperlight CodeAct

Modern aracılar genellikle modelin kendisinden çok araç çağırma aşırı yükü ile sınırlıdır. Verileri okuyan, hafif hesaplama yapan ve bir sonuç oluşturan bir görev, her bir adım basit olsa bile, kolayca model -> araç -> model -> araç etkileşimlerine dönüşen bir zincire dönüşebilir.

Hiperlight destekli CodeAct bu döngüyü çözümler. Model bir kısa Python programı yazar, korumalı alan onu bir kez yürütür ve sağlayıcıya ait araçlara korumalı alanın içinden call_tool(...) ulaşılır. Temsili araç yoğun iş yüklerinde bu değişiklik, yürütmeyi yalıtılmış ve denetlenebilir durumda tutarken, gecikmeyi kabaca yarı yarıya ve belirteç kullanımını yüzde 60 kadar azaltabilir.

Get started

Çok yakında.

Paketi yükle

pip install agent-framework-hyperlight --pre

agent-framework-hyperlight 'den agent-framework-core ayrı olarak teslim edilir, bu nedenle sandbox çalıştırma ortamını yalnızca ihtiyacınız olduğunda alırsınız.

Uyarı

Paket, Hyperlight sandbox bileşenlerine bağlıdır. Geçerli platformunuz için arka uç henüz yayımlanmamışsa, execute_code sandbox oluşturulmaya çalışıldığında başarısız olur.

HyperlightCodeActProvider komutunu kullanma

HyperlightCodeActProvider , CodeAct'in her çalıştırma için otomatik olarak eklenmesini istediğinizde önerilen giriş noktasıdır. Sağlayıcıya ait araçları doğrudan ajanın araç yüzeyinden uzak tutarken, çalışma kapsamlı CodeAct yönergelerini ve execute_code aracını ekler.

Sağlayıcı üzerinde kaydedilen araçlar call_tool(...) yoluyla korumalı alanda kullanılabilir, ancak doğrudan ajan araçları olarak sunulmaz. Sağlayıcı ayrıca add_tools(...), remove_tool(...), add_file_mounts(...) ve add_allowed_domains(...) gibi yöntemler aracılığıyla araçlar, dosya bağlamaları ve giden izin listesi girdileri için CRUD stili yönetimi kullanıma sunar.

Onaylar ve barındırma araçları nasıl çalışır?

Aracı Çerçevesi araçları, otomatik olarak çağrılıp çağrılamayacaklarını veya kullanıcı onayı için duraklatılmalarının gerekip gerekmediğini denetleyen bir approval_mode özelliğine sahiptir.

Bir aracı üzerine HyperlightCodeActProvider kaydetmekle doğrudan Agent(tools=...) üzerine kaydetmek arasındaki temel fark, Python işlevinin en sonunda çalıştığı yerde değil , aracın nasıl çağrıldığıdır:

  • Üzerinde HyperlightCodeActProvider(tools=...) kayıtlı araçlar modelden doğrudan bileşen olarak gizlenir. Model, içinde call_tool("name", ...)çağıran execute_code kod yazarak bu modele ulaşır.
  • Agent(tools=...) kaydedilen araçlar, modele birinci sınıf araçlar olarak sunulur ve her doğrudan çağrı bu aracın kendi approval_mode özelliğine uygun şekilde çalışır.

call_tool(...) konak geri çağrıları için bir köprüdür; aracın korumalı alan içinde yeniden uygulanması değildir. Sağlayıcıya ait araçlar, konak işlemde çalışır ve bu süreçte, konak işleminin erişebildiği dosya sistemi, ağ ve kimlik bilgilerini kullanır.

Bir kural olarak:

  • Modelin tek execute_code bir tur içinde birçok çağrı oluşturabilmesi için sağlayıcıya ucuz, belirleyici ve güvenli zincir araçları yerleştirin.
  • Yan etki yaratan veya onayla kontrol edilen işlemleri genellikle doğrudan approval_mode="always_require" aracı araçlar olarak tutun, böylece her çağrı ayrı ayrı görünebilir ve onaylanabilir kalsın.

Konak araçları korumalı alanın dışında çalıştığı için file_mounts ve allowed_domains, call_tool(...) arkasındaki konak geri çağırmasını değil, korumalı alan kodunun kendisini kısıtlar. Hassas bir kaynağa denetimli erişime ihtiyacınız olduğunda, korumalı alan izinlerini genişletmek yerine dar bir barındırma aracını tercih edin.

Uyarı

call_tool(...) aracılığıyla çağrılan araçlar, yerel Python değerlerini (dict, list, ilkel veya özel nesne) doğrudan konukta döndürür. "result_parser üzerinde yapılandırılan herhangi bir şey, LLM'ye bakan tüketicilere yöneliktir ve FunctionTool korumalı alan yolunda çalışmaz; eğer korumalı alan tüketicileri için gereksinim duyuluyorsa, biçimlendirmeyi aracın işlevi içine uygulayın."

Doğrudan kablolama için kullanın HyperlightExecuteCodeTool

Aynı aracıda sadece doğrudan kullanılan araçlarla karıştırmanız gerektiğinde, sağlayıcı yerine execute_code kullanın. Sabit yapılandırmalar için CodeAct yönergelerini bir kez derleyebilir ve aracı doğrudan kablolayabilirsiniz:

from agent_framework_hyperlight import HyperlightExecuteCodeTool

execute_code = HyperlightExecuteCodeTool(
    tools=[compute],
    approval_mode="never_require",
)

codeact_instructions = execute_code.build_instructions(tools_visible_to_model=False)

CodeAct yüzeyi sabitlendiğinde ve her çalıştırmada sağlayıcı yaşam döngüsüne ihtiyacınız olmadığında bu desen kullanışlıdır. HyperlightCodeActProvider'in aksine, tek başına kullanılan araç otomatik olarak istem kılavuzu eklemez, bu nedenle build_instructions(...) çıktısını ajan talimatlarına kendiniz eklemelisiniz.

Giden erişim ve dosya yapılandırması

Hyperlight, salt okunur /input bir ağacı ve oluşturulan yapıtlar için yazılabilir /output bir alanı sağlar.

  • Bir çalışma alanını workspace_root altında kullanılabilir hale getirmek için /input/ kullanın.
  • file_mounts ile belirli konak yollarını korumalı alana yönlendirin.
  • Belirli hedefler veya yöntemler için yalnızca giden erişimi etkinleştirmek amacıyla allowed_domains kullanın.

file_mounts bir kısa dizgi, açık bir (host_path, mount_path) çifti veya adlandırılmış bir FileMount demet kabul eder. allowed_domains bir dize hedefi, açık bir (target, method-or-methods) çifti veya adlandırılmış bir AllowedDomain tuple kabul eder.

from agent_framework_hyperlight import HyperlightCodeActProvider

codeact = HyperlightCodeActProvider(
    tools=[compute],
    file_mounts=[
        "/host/data",
        ("/host/models", "/sandbox/models"),
    ],
    allowed_domains=[
        "api.github.com",
        ("internal.api.example.com", "GET"),
    ],
)

Çıkış kılavuzu

Metni execute_code üzerinden göstermek için kodu print(...) ile sonlandırın; Hyperlight, son ifadenin değerini otomatik olarak döndürmez.

Dosya sistemi erişimi etkinleştirildiğinde, daha büyük nesneleri bunun yerine /output/<filename> yazın. Döndürülen dosyalar araç sonucuna eklenir, /input etiketinin altındaki dosyalar ise korumalı alan içinde okunabilir durumda olur.

CodeAct ve doğrudan araç çağrılarını karşılaştırma

Karşılaştırma ölçütü örneği, aynı görevi, aynı istemci, model, araçlar, istem ve yapılandırılmış çıkış şeması ile bir kez geleneksel araç çağrısı aracılığıyla ve bir kez de Hyperlight destekli CodeAct aracılığıyla çalıştırır. Tek fark kablolamadır: doğrudan aletler ve tarafından execute_codedesteklenen tek HyperlightCodeActProvider bir alet.

Bu örnekte ajan, bir veri kümesindeki kullanıcılar ve siparişler üzerindeki genel toplamları hesaplamak için sürekli veri arar ve basit hesaplamalar yapar. Bu tam olarak CodeAct'in düzenleme ek yükünü kaldırabileceği çok küçük adımlı iş akışı türüdür. Tam örnek, her iki çalıştırma için geçen süreyi ve belirteç kullanımını yazdırır, böylece yürütme şeklini kendi ortamınızda karşılaştırabilirsiniz.

Mevcut sınırlamalar

Bu paket hâlâ alfa aşamasındadır ve bazı kısıtlamaları göz önünde bulundurarak plan yapmak önemlidir.

  1. Platform desteği, yayımlanan Hyperlight arka uç paketlerini izler. Bugün bu, desteklenen Linux ve Windows ortamları anlamına gelir; korumalı alan oluşturma sırasında desteklenmeyen platformlar başarısız olacaktır.
  2. Mevcut entegrasyon Python misafir kodunu yürütür. .NET belgeleri yakında kullanıma sunulacaktır.
  3. Bellek içi yorumlayıcı durumu ayrı execute_code çağrılarda kalıcı olmaz. Verilerin çağrılar arasında kalması gerektiğinde monte edilmiş dosyaları ve /output yapıtları kullanın.
  4. Onay, execute_code çağrısı bütün olarak değerlendirildiğinde geçerlidir, call_tool(...) içindeki her bir parça için değil.
  5. Model yalıtılmış araçları doğrudan çağırma yerine bu sözleşmeye karşı kod yazdığından, araç açıklamaları, parametre anotasyonları ve dönüş şekilleri burada daha önemlidir.

Sonraki Adımlar