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 serangkaian operasi yang didukung bervariasi di seluruh framework, kami memberikan petunjuk penggunaan untuk template khusus framework:
Framework | Deskripsi |
---|---|
Agent Development Kit (pratinjau) | Dirancang berdasarkan praktik terbaik internal Google untuk developer yang membangun aplikasi AI atau tim yang perlu membuat prototipe dan men-deploy solusi berbasis agen yang andal dengan cepat. |
LangChain | Lebih mudah digunakan untuk kasus penggunaan dasar karena konfigurasi dan abstraksinya yang telah ditentukan sebelumnya. |
LangGraph | Pendekatan berbasis grafik untuk menentukan alur kerja, dengan kemampuan interaksi manusia dan mundur/putar ulang lanjutan. |
AG2 (sebelumnya AutoGen) | AG2 menyediakan framework percakapan multi-agen sebagai abstraksi tingkat tinggi untuk membangun alur kerja LLM. |
LlamaIndex (pratinjau) | Pipeline kueri LlamaIndex menawarkan antarmuka tingkat tinggi untuk membuat alur kerja Retrieval-Augmented Generation (RAG). |
Untuk agen kustom yang tidak didasarkan pada salah satu template khusus framework, Anda dapat mengikuti langkah-langkah berikut:
- Autentikasi pengguna.
- Dapatkan instance agen.
- Cari operasi yang didukung.
- Kueri agen.
- (Jika berlaku) Streaming respons dari agen.
Langkah 1: Autentikasi pengguna
Mengikuti 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 agen yang ada.
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/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID
Bagian selanjutnya 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
Ditampilkan di 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 (yaituagent.query
untuk operasi bernamaquery
).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: Mengirim kueri ke agen
Untuk membuat kueri agen menggunakan salah satu operasi yang didukungnya (misalnya, query
):
Vertex AI SDK untuk Python
agent.query(input="What is the exchange rate from US dollars to Swedish Krona today?")
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({
"class_method": "query",
"input": {
"input": "What is the exchange rate from US dollars to Swedish Krona today?"
}
})
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:query -d '{
"class_method": "query",
"input": {
"input": "What is the exchange rate from US dollars to Swedish Krona today?"
}
}'
Respons kueri adalah string yang mirip dengan output pengujian aplikasi lokal:
{"input": "What is the exchange rate from US dollars to Swedish Krona today?",
# ...
"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")
for response in agent.stream_query(
input="What is the exchange rate from US dollars to Swedish Krona today?"
):
print(response)
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({
"class_method": "stream_query",
"input": {
"input": "What is the exchange rate from US dollars to Swedish Krona today?"
},
}),
stream=True,
)
REST
curl \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID:streamQuery?alt=sse -d '{
"class_method": "stream_query",
"input": {
"input": "What is the exchange rate from US dollars to Swedish Krona today?"
}
}'
Vertex AI Agent Engine melakukan streaming respons sebagai urutan objek yang dibuat secara iteratif. Misalnya, serangkaian 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 6: Mengirim kueri ke agen secara asinkron
Jika Anda menentukan operasi async_query
saat mengembangkan agen,
ada dukungan untuk kueri asinkron sisi klien dari agen di
Vertex AI SDK untuk Python.
Vertex AI SDK untuk Python
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
response = await agent.async_query(
input="What is the exchange rate from US dollars to Swedish Krona today?"
)
print(response)
Respons kueri adalah kamus yang sama dengan output pengujian lokal:
{"input": "What is the exchange rate from US dollars to Swedish Krona today?",
# ...
"output": "For 1 US dollar you will get 10.7345 Swedish Krona."}
Langkah 7: Streaming respons dari agen secara asinkron
Jika Anda menentukan operasi async_stream_query
saat mengembangkan agen,
Anda dapat melakukan streaming respons dari agen secara asinkron menggunakan salah satu
operasinya (misalnya, async_stream_query
):
Vertex AI SDK untuk Python
agent = agent_engines.get("projects/PROJECT_ID/locations/LOCATION/reasoningEngines/RESOURCE_ID")
async for response in agent.async_stream_query(
input="What is the exchange rate from US dollars to Swedish Krona today?"
):
print(response)
Operasi async_stream_query
memanggil endpoint streamQuery
yang sama di balik layar dan melakukan streaming respons secara asinkron sebagai urutan objek yang dihasilkan secara iteratif. Misalnya, serangkaian 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
Responsnya harus sama dengan yang dihasilkan selama pengujian lokal.
Langkah berikutnya
- Gunakan agen LangChain.
- Gunakan agen LangGraph.
- Gunakan agen AG2.
- Gunakan agen LlamaIndex Query Pipeline.
- Mengevaluasi agen.
- Mengelola agen yang di-deploy.
- Dapatkan dukungan.