Menggunakan agen

Kode untuk membuat kueri agen sama, terlepas dari apakah kode tersebut berjalan secara lokal atau di-deploy dari jarak jauh. Oleh karena itu, di halaman ini, istilah agent mengacu pada local_agent atau remote_agent secara bergantian. Karena kumpulan operasi yang didukung bervariasi di seluruh framework, kami menyediakan petunjuk penggunaan untuk template khusus framework:

Framework Deskripsi
LangChain Lebih mudah digunakan untuk kasus penggunaan dasar karena konfigurasi dan abstraksi yang telah ditentukan sebelumnya.
LangGraph Pendekatan berbasis grafik untuk menentukan alur kerja, dengan kemampuan lanjutan yang memerlukan interaksi manusia dan kemampuan mundur/putar ulang.
AG2 (sebelumnya AutoGen) AG2 menyediakan framework percakapan multi-agen sebagai abstraksi tingkat tinggi untuk membuat alur kerja LLM.

Untuk agen kustom yang tidak didasarkan pada salah satu template khusus framework, Anda dapat mengikuti langkah-langkah berikut:

  1. Autentikasi pengguna.
  2. Mendapatkan instance agen.
  3. Mencari operasi yang didukung.
  4. Buat kueri agen.
  5. (Jika berlaku) Streaming respons dari agen.

Langkah 1: Autentikasi pengguna

Ikuti petunjuk yang sama seperti menyiapkan lingkungan Anda.

Langkah 2: Dapatkan instance agen

Untuk membuat kueri agen, Anda memerlukan instance agen terlebih dahulu. Anda dapat membuat instance baru atau mendapatkan instance yang ada dari agen.

Untuk mendapatkan agen yang sesuai dengan ID resource tertentu:

Vertex AI SDK untuk Python

Jalankan kode berikut:

from vertexai import agent_engines

agent = agent_engines.get(RESOURCE_ID)

Atau, Anda dapat memberikan nama resource lengkap agen:

agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

permintaan

Jalankan kode berikut:

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

response = requests.get(
f"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID",
    headers={
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": f"Bearer {get_identity_token()}",
    },
)

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID

Bagian selanjutnya dalam bagian ini mengasumsikan bahwa Anda memiliki instance, yang diberi nama agent.

Langkah 3: Operasi yang didukung

Saat mengembangkan agen secara lokal, Anda memiliki akses dan pengetahuan tentang operasi yang didukungnya. Untuk menggunakan agen yang di-deploy, Anda dapat menghitung operasi yang didukungnya:

Vertex AI SDK untuk Python

Jalankan kode berikut:

agent.operation_schemas()

permintaan

Jalankan kode berikut:

import json

json.loads(response.content).get("spec").get("classMethods")

REST

Direpresentasikan dalam spec.class_methods dari respons terhadap permintaan curl.

Skema untuk setiap operasi adalah kamus yang mendokumentasikan informasi metode untuk agen yang dapat Anda panggil. Berikut adalah contoh skema operasi untuk operasi sinkron:

Perintah berikut memberikan daftar skema dalam format JSON yang sesuai dengan operasi objek remote_app:

agent.operation_schemas()

Sebagai contoh, berikut adalah skema untuk operasi query dari LangchainAgent:

{'api_mode': '',
 'name': 'query',
 'description': """Queries the Agent with the given input and config.
    Args:
        input (Union[str, Mapping[str, Any]]):
            Required. The input to be passed to the Agent.
        config (langchain_core.runnables.RunnableConfig):
            Optional. The config (if any) to be used for invoking the Agent.
    Returns:
        The output of querying the Agent with the given input and config.
""",            '        ',
 'parameters': {'$defs': {'RunnableConfig': {'description': 'Configuration for a Runnable.',
                                             'properties': {'configurable': {...},
                                                            'run_id': {...},
                                                            'run_name': {...},
                                                            ...},
                                             'type': 'object'}},
                'properties': {'config': {'nullable': True},
                               'input': {'anyOf': [{'type': 'string'}, {'type': 'object'}]}},
                'required': ['input'],
                'type': 'object'}}

di mana

  • name adalah nama operasi (yaitu agent.query untuk operasi bernama query).
  • api_mode adalah mode API operasi ("" untuk sinkron, "stream" untuk streaming).
  • description adalah deskripsi operasi berdasarkan docstring metode.
  • parameters adalah skema argumen input dalam format skema OpenAPI.

Langkah 4: Buat kueri agen

Untuk membuat kueri agen menggunakan salah satu operasi yang didukungnya (misalnya, query):

Vertex AI SDK untuk Python

agent.query(input={"messages": [
    ("user", "What is the exchange rate from US dollars to Swedish currency?")
]})

permintaan

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

requests.post(
    f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:query",
    headers={
        "Content-Type": "application/json; charset=utf-8",
        "Authorization": f"Bearer {get_identity_token()}",
    },
    data=json.dumps({"input": {
        "input": {"messages": [
            ("user", "What is the exchange rate from US dollars to Swedish currency?")
        ]},
    }})
)

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{
  "input": {
    "input": {"messages": [
      ("user", "What is the exchange rate from US dollars to Swedish currency?")
    ]},
  }
}'

Respons kueri adalah string yang mirip dengan output pengujian aplikasi lokal:

{"input": "What is the exchange rate from US dollars to Swedish currency?",
 # ...
 "output": "For 1 US dollar you will get 10.7345 Swedish Krona."}

Langkah 5: Streaming respons dari agen

Jika berlaku, Anda dapat melakukan streaming respons dari agen menggunakan salah satu operasinya (misalnya, stream_query):

Vertex AI SDK untuk Python

agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")

agent.stream_query(input={"messages": [
    ("user", "What is the exchange rate from US dollars to Swedish currency?")
]})

permintaan

from google import auth as google_auth
from google.auth.transport import requests as google_requests
import requests

def get_identity_token():
    credentials, _ = google_auth.default()
    auth_request = google_requests.Request()
    credentials.refresh(auth_request)
    return credentials.token

requests.post(
    f"https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/reasoningEngines/{RESOURCE_ID}:streamQuery",
    headers={
        "Content-Type": "application/json",
        "Authorization": f"Bearer {get_identity_token()}",
    },
    data=json.dumps({"input": {
        "input": {"messages": [
            ("user", "What is the exchange rate from US dollars to Swedish currency?")
        ]},
    }}),
    stream=True,
)

REST

curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://us-central1-aiplatform.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:streamQuery?alt=sse -d '{
  "input": {
    "input": {"messages": [
      ("user", "What is the exchange rate from US dollars to Swedish currency?")
    ]},
  }
}'

Agent Engine melakukan streaming respons sebagai urutan objek yang dihasilkan secara berulang. Misalnya, kumpulan tiga respons mungkin terlihat seperti berikut:

{'actions': [{'tool': 'get_exchange_rate', ...}]}  # first response
{'steps': [{'action': {'tool': 'get_exchange_rate', ...}}]}  # second response
{'output': 'The exchange rate is 11.0117 SEK per USD as of 2024-12-03.'}  # final response

Langkah berikutnya