API ์๋ฒ ์ฌ์ฉํ๊ธฐ¶
์์ด์ ํธ๋ฅผ ๋ฐฐํฌํ๊ธฐ ์ ์ ์๋ํ ๋๋ก ์๋ํ๋์ง ํ ์คํธํด์ผ ํฉ๋๋ค. ๊ฐ๋ฐ ํ๊ฒฝ์์ ์์ด์ ํธ๋ฅผ ํ ์คํธํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ADK API ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค.
ํฌํธ ๋ฒํธ๋ฅผ ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
Maven์ผ๋ก ADK ์น ์๋ฒ๋ฅผ ์ปดํ์ผํ๊ณ ์คํํฉ๋๋ค.
Gradle์ ๊ฒฝ์ฐ, build.gradle ๋๋ build.gradle.kts ๋น๋ ํ์ผ์ ํ๋ฌ๊ทธ์ธ ์น์
์ ๋ค์ Java ํ๋ฌ๊ทธ์ธ์ด ์์ด์ผ ํฉ๋๋ค.
tasks.register('runADKWebServer', JavaExec) {
dependsOn classes
classpath = sourceSets.main.runtimeClasspath
mainClass = 'com.google.adk.web.AdkWebServer'
args '--adk.agents.source-dir=src/main/java/agents', '--server.port=8080'
}
๋ง์ง๋ง์ผ๋ก, ๋ช ๋ น์ค์์ ๋ค์ ๋ช ๋ น์ ์คํํฉ๋๋ค.
Java์์๋ Dev UI์ API ์๋ฒ๊ฐ ํจ๊ป ๋ฒ๋ค๋ก ์ ๊ณต๋ฉ๋๋ค.
์ด ๋ช ๋ น์ด๋ ๋ก์ปฌ ์น ์๋ฒ๋ฅผ ์์ํ๋ฉฐ, ์ฌ๊ธฐ์ cURL ๋ช ๋ น์ ์คํํ๊ฑฐ๋ API ์์ฒญ์ ๋ณด๋ด ์์ด์ ํธ๋ฅผ ํ ์คํธํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ์ฌ์ฉ๋ฒ ๋ฐ ๋๋ฒ๊น
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ์๋ํฌ์ธํธ, ์์ฒญ/์๋ต ํ์, ๋๋ฒ๊น ํ(๋ํํ API ๋ฌธ์ ์ฌ์ฉ ๋ฐฉ๋ฒ ํฌํจ)์ ๋ํ ์ ์ฒด ์ฐธ์กฐ๋ ์๋ ADK API ์๋ฒ ๊ฐ์ด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ก์ปฌ ํ ์คํธ¶
๋ก์ปฌ ํ ์คํธ๋ ๋ก์ปฌ ์น ์๋ฒ๋ฅผ ์์ํ๊ณ , ์ธ์ ์ ์์ฑํ๊ณ , ์์ด์ ํธ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ ๊ณผ์ ์ ํฌํจํฉ๋๋ค. ๋จผ์ , ์ฌ๋ฐ๋ฅธ ์์ ๋๋ ํฐ๋ฆฌ์ ์๋์ง ํ์ธํ์ธ์.
๋ก์ปฌ ์๋ฒ ์์
๋ค์์ผ๋ก, ์์ ๋์ด๋ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์๋ฒ๋ฅผ ์์ํฉ๋๋ค.
์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํ๊ฒ ๋ํ๋์ผ ํฉ๋๋ค.
2025-05-13T23:32:08.972-06:00 INFO 37864 --- [ebServer.main()] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port 8080 (http) with context path '/'
2025-05-13T23:32:08.980-06:00 INFO 37864 --- [ebServer.main()] com.google.adk.web.AdkWebServer : Started AdkWebServer in 1.15 seconds (process running for 2.877)
2025-05-13T23:32:08.981-06:00 INFO 37864 --- [ebServer.main()] com.google.adk.web.AdkWebServer : AdkWebServer application started successfully.
์ด์ ์๋ฒ๊ฐ ๋ก์ปฌ์์ ์คํ ์ค์ ๋๋ค. ์ดํ์ ๋ชจ๋ ๋ช ๋ น์ด์์ ์ฌ๋ฐ๋ฅธ **ํฌํธ ๋ฒํธ**๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ์ธ์ ์์ฑ
API ์๋ฒ๊ฐ ๊ณ์ ์คํ ์ค์ธ ์ํ์์ ์ ํฐ๋ฏธ๋ ์ฐฝ์ด๋ ํญ์ ์ด๊ณ ๋ค์์ ์ฌ์ฉํ์ฌ ์์ด์ ํธ์ ์ ์ธ์ ์ ์์ฑํฉ๋๋ค.
curl -X POST http://localhost:8000/apps/my_sample_agent/users/u_123/sessions/s_123 \
-H "Content-Type: application/json" \
-d '{"key1": "value1", "key2": 42}'
๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ถ์ํด ๋ณด๊ฒ ์ต๋๋ค.
http://localhost:8000/apps/my_sample_agent/users/u_123/sessions/s_123: ์ด ์ฃผ์๋ ์์ด์ ํธ ํด๋ ์ด๋ฆ์ธmy_sample_agent์์ด์ ํธ์ ๋ํด ์ฌ์ฉ์ ID(u_123)์ ์ธ์ ID(s_123)๋ก ์ ์ธ์ ์ ์์ฑํฉ๋๋ค.my_sample_agent๋ฅผ ์ฌ๋ฌ๋ถ์ ์์ด์ ํธ ํด๋ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.u_123์ ํน์ ์ฌ์ฉ์ ID๋ก,s_123์ ํน์ ์ธ์ ID๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.{"key1": "value1", "key2": 42}: ์ด ๋ถ๋ถ์ ์ ํ ์ฌํญ์ ๋๋ค. ์ธ์ ์ ์์ฑํ ๋ ์์ด์ ํธ์ ๊ธฐ์กด ์ํ(dict)๋ฅผ ์ฌ์ฉ์ ์ ์ํ๋ ๋ฐ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฑ๊ณต์ ์ผ๋ก ์์ฑ๋๋ฉด ์ธ์ ์ ๋ณด๊ฐ ๋ฐํ๋์ด์ผ ํฉ๋๋ค. ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํ๊ฒ ๋ํ๋์ผ ํฉ๋๋ค.
{"id":"s_123","appName":"my_sample_agent","userId":"u_123","state":{"key1":"value1","key2":42},"events":[],"lastUpdateTime":1743711430.022186}
Info
์ ํํ ๋์ผํ ์ฌ์ฉ์ ID์ ์ธ์
ID๋ก ์ฌ๋ฌ ์ธ์
์ ์์ฑํ ์ ์์ต๋๋ค. ์๋ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์๋ต์ ๋ณผ ์ ์์ต๋๋ค. {"detail":"Session already exists: s_123"}. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ํด๋น ์ธ์
(์: s_123)์ ์ญ์ ํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ์
ID๋ฅผ ์ ํํ๋ฉด ๋ฉ๋๋ค.
์ฟผ๋ฆฌ ์ ์ก
POST๋ฅผ ํตํด ์์ด์ ํธ์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์๋ /run ๋๋ /run_sse ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๋ ๊ฐ์ง๊ฐ ์์ต๋๋ค.
POST http://localhost:8000/run: ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋ฆฌ์คํธ๋ก ์์งํ์ฌ ํ ๋ฒ์ ๋ฐํํฉ๋๋ค. ๋๋ถ๋ถ์ ์ฌ์ฉ์์๊ฒ ์ ํฉํฉ๋๋ค (ํ์คํ์ง ์๋ค๋ฉด ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค).POST http://localhost:8000/run_sse: ์๋ฒ-์ ์ก ์ด๋ฒคํธ(Server-Sent-Events)๋ก ๋ฐํํ๋ฉฐ, ์ด๋ ์ด๋ฒคํธ ๊ฐ์ฒด์ ์คํธ๋ฆผ์ ๋๋ค. ์ด๋ฒคํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ ์ฆ์ ์๋ฆผ์ ๋ฐ๊ณ ์ถ์ ์ฌ์ฉ์์๊ฒ ์ ํฉํฉ๋๋ค./run_sse๋ฅผ ์ฌ์ฉํ๋ฉดstreaming์true๋ก ์ค์ ํ์ฌ ํ ํฐ ์์ค ์คํธ๋ฆฌ๋ฐ์ ํ์ฑํํ ์๋ ์์ต๋๋ค.
/run ์ฌ์ฉํ๊ธฐ
curl -X POST http://localhost:8000/run \
-H "Content-Type: application/json" \
-d '{
"app_name": "my_sample_agent",
"user_id": "u_123",
"session_id": "s_123",
"new_message": {
"role": "user",
"parts": [{
"text": "Hey whats the weather in new york today"
}]
}
}'
/run์ ์ฌ์ฉํ๋ฉด ์ ์ฒด ์ด๋ฒคํธ ์ถ๋ ฅ์ด ๋์์ ๋ฆฌ์คํธ ํํ๋ก ํ์๋๋ฉฐ, ๋ค์๊ณผ ์ ์ฌํ๊ฒ ๋ํ๋์ผ ํฉ๋๋ค.
[{"content":{"parts":[{"functionCall":{"id":"af-e75e946d-c02a-4aad-931e-49e4ab859838","args":{"city":"new york"},"name":"get_weather"}}],"role":"model"},"invocationId":"e-71353f1e-aea1-4821-aa4b-46874a766853","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"longRunningToolIds":[],"id":"2Btee6zW","timestamp":1743712220.385936},{"content":{"parts":[{"functionResponse":{"id":"af-e75e946d-c02a-4aad-931e-49e4ab859838","name":"get_weather","response":{"status":"success","report":"The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit)."}}}],"role":"user"},"invocationId":"e-71353f1e-aea1-4821-aa4b-46874a766853","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"id":"PmWibL2m","timestamp":1743712221.895042},{"content":{"parts":[{"text":"OK. The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).\n"}],"role":"model"},"invocationId":"e-71353f1e-aea1-4821-aa4b-46874a766853","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"id":"sYT42eVC","timestamp":1743712221.899018}]
/run_sse ์ฌ์ฉํ๊ธฐ
curl -X POST http://localhost:8000/run_sse \
-H "Content-Type: application/json" \
-d '{
"app_name": "my_sample_agent",
"user_id": "u_123",
"session_id": "s_123",
"new_message": {
"role": "user",
"parts": [{
"text": "Hey whats the weather in new york today"
}]
},
"streaming": false
}'
streaming์ true๋ก ์ค์ ํ์ฌ ํ ํฐ ์์ค ์คํธ๋ฆฌ๋ฐ์ ํ์ฑํํ ์ ์์ต๋๋ค. ์ด๋ ์๋ต์ด ์ฌ๋ฌ ์ฒญํฌ๋ก ๋ฐํ๋จ์ ์๋ฏธํ๋ฉฐ, ์ถ๋ ฅ์ ๋ค์๊ณผ ์ ์ฌํ๊ฒ ๋ํ๋์ผ ํฉ๋๋ค.
data: {"content":{"parts":[{"functionCall":{"id":"af-f83f8af9-f732-46b6-8cb5-7b5b73bbf13d","args":{"city":"new york"},"name":"get_weather"}}],"role":"model"},"invocationId":"e-3f6d7765-5287-419e-9991-5fffa1a75565","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"longRunningToolIds":[],"id":"ptcjaZBa","timestamp":1743712255.313043}
data: {"content":{"parts":[{"functionResponse":{"id":"af-f83f8af9-f732-46b6-8cb5-7b5b73bbf13d","name":"get_weather","response":{"status":"success","report":"The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit)."}}}],"role":"user"},"invocationId":"e-3f6d7765-5287-419e-9991-5fffa1a75565","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"id":"5aocxjaq","timestamp":1743712257.387306}
data: {"content":{"parts":[{"text":"OK. The weather in New York is sunny with a temperature of 25 degrees Celsius (41 degrees Fahrenheit).\n"}],"role":"model"},"invocationId":"e-3f6d7765-5287-419e-9991-5fffa1a75565","author":"weather_time_agent","actions":{"stateDelta":{},"artifactDelta":{},"requestedAuthConfigs":{}},"id":"rAnWGSiV","timestamp":1743712257.391317}
/run ๋๋ /run_sse๋ฅผ ์ฌ์ฉํ์ฌ base64๋ก ์ธ์ฝ๋ฉ๋ ํ์ผ๊ณผ ํจ๊ป ์ฟผ๋ฆฌ ์ ์ก
curl -X POST http://localhost:8000/run \
--H 'Content-Type: application/json' \
--d '{
"appName":"my_sample_agent",
"userId":"u_123",
"sessionId":"s_123",
"newMessage":{
"role":"user",
"parts":[
{
"text":"Describe this image"
},
{
"inlineData":{
"displayName":"my_image.png",
"data":"iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAACXBIWXMAAAsTAAALEwEAmpw...",
"mimeType":"image/png"
}
}
]
},
"streaming":false
}'
Info
/run_sse๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ฐ ์ด๋ฒคํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํด์ง๋ ์ฆ์ ๋ณผ ์ ์์ต๋๋ค.
ํตํฉ¶
ADK๋ ์ฝ๋ฐฑ์ ์ฌ์ฉํ์ฌ ์๋ํํฐ ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋๊ตฌ์ ํตํฉ๋ฉ๋๋ค. ์ด๋ฌํ ํตํฉ์ ์์ด์ ํธ ํธ์ถ ๋ฐ ์ํธ ์์ฉ์ ์์ธํ ์ถ์ ์ ์บก์ฒํ๋ฉฐ, ์ด๋ ๋์์ ์ดํดํ๊ณ ๋ฌธ์ ๋ฅผ ๋๋ฒ๊น ํ๋ฉฐ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ์ค์ํฉ๋๋ค.
- Comet Opik์ ์คํ์์ค LLM ๊ด์ธก ๊ฐ๋ฅ์ฑ ๋ฐ ํ๊ฐ ํ๋ซํผ์ผ๋ก, ADK๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํฉ๋๋ค.
์์ด์ ํธ ๋ฐฐํฌํ๊ธฐ¶
์ด์ ์์ด์ ํธ์ ๋ก์ปฌ ์๋์ ํ์ธํ์ผ๋ฏ๋ก, ์์ด์ ํธ ๋ฐฐํฌ ๋จ๊ณ๋ก ๋์ด๊ฐ ์ค๋น๊ฐ ๋์์ต๋๋ค! ์์ด์ ํธ๋ฅผ ๋ฐฐํฌํ ์ ์๋ ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Agent Runtime์ ๋ฐฐํฌํ๊ธฐ: ADK ์์ด์ ํธ๋ฅผ Google Cloud์ ๊ด๋ฆฌํ Agent Platform ์๋น์ค์ ๋ฐฐํฌํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ๋๋ค.
- Cloud Run์ ๋ฐฐํฌํ๊ธฐ: Google Cloud์ ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์์ด์ ํธ๋ฅผ ํ์ฅํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์ ํ ์ ์ดํ ์ ์์ต๋๋ค.
ADK API ์๋ฒ¶
ADK API ์๋ฒ๋ ์์ด์ ํธ๋ฅผ RESTful API๋ฅผ ํตํด ๋ ธ์ถํ๋ ๋ฏธ๋ฆฌ ํจํค์ง๋ FastAPI ์น ์๋ฒ์ ๋๋ค. ๋ก์ปฌ ํ ์คํธ ๋ฐ ๊ฐ๋ฐ์ ์ํ ์ฃผ์ ๋๊ตฌ์ด๋ฉฐ, ๋ฐฐํฌํ๊ธฐ ์ ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์์ด์ ํธ์ ์ํธ ์์ฉํ ์ ์๊ฒ ํด์ค๋๋ค.
์๋ฒ ์คํํ๊ธฐ¶
์๋ฒ๋ฅผ ์์ํ๋ ค๋ฉด ํ๋ก์ ํธ์ ๋ฃจํธ ๋๋ ํฐ๋ฆฌ์์ ๋ค์ ๋ช ๋ น์ ์คํํ์ธ์.
๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฒ๋ http://localhost:8000์์ ์คํ๋ฉ๋๋ค. ์๋ฒ๊ฐ ์์๋์์์ ํ์ธํ๋ ์ถ๋ ฅ์ด ํ์๋ฉ๋๋ค.
๋ํํ API ๋ฌธ์๋ก ๋๋ฒ๊น ํ๊ธฐ¶
API ์๋ฒ๋ Swagger UI๋ฅผ ์ฌ์ฉํ์ฌ ๋ํํ API ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์์ฑํฉ๋๋ค. ์ด๋ ์๋ํฌ์ธํธ๋ฅผ ํ์ํ๊ณ , ์์ฒญ ํ์์ ์ดํดํ๋ฉฐ, ๋ธ๋ผ์ฐ์ ์์ ์ง์ ์์ด์ ํธ๋ฅผ ํ ์คํธํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค.
๋ํํ ๋ฌธ์์ ์ก์ธ์คํ๋ ค๋ฉด API ์๋ฒ๋ฅผ ์์ํ๊ณ ์น ๋ธ๋ผ์ฐ์ ์์ http://localhost:8000/docs๋ก ์ด๋ํ์ธ์.
์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ API ์๋ํฌ์ธํธ์ ์์ ํ๊ณ ๋ํํ์ธ ๋ชฉ๋ก์ด ํ์๋๋ฉฐ, ์ด๋ฅผ ํ์ฅํ์ฌ ํ๋ผ๋ฏธํฐ, ์์ฒญ ๋ณธ๋ฌธ ๋ฐ ์๋ต ์คํค๋ง์ ๋ํ ์์ธํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์์ต๋๋ค. "Try it out"์ ํด๋ฆญํ์ฌ ์คํ ์ค์ธ ์์ด์ ํธ์ ์ค์๊ฐ ์์ฒญ์ ๋ณด๋ผ ์๋ ์์ต๋๋ค.
API ์๋ํฌ์ธํธ¶
๋ค์ ์น์ ์์๋ ์์ด์ ํธ์ ์ํธ ์์ฉํ๊ธฐ ์ํ ์ฃผ์ ์๋ํฌ์ธํธ์ ๋ํด ์์ธํ ์ค๋ช ํฉ๋๋ค.
JSON ์ด๋ฆ ๊ท์น
- ์์ฒญ ๋ณธ๋ฌธ์ ํ๋ ์ด๋ฆ์
snake_case๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค (์:"app_name"). - ์๋ต ๋ณธ๋ฌธ์ ํ๋ ์ด๋ฆ์
camelCase๋ฅผ ์ฌ์ฉํฉ๋๋ค (์:"appName").
์ ํธ๋ฆฌํฐ ์๋ํฌ์ธํธ¶
์ฌ์ฉ ๊ฐ๋ฅํ ์์ด์ ํธ ๋ชฉ๋ก ์กฐํ¶
์๋ฒ์์ ๋ฐ๊ฒฌํ ๋ชจ๋ ์์ด์ ํธ ์ ํ๋ฆฌ์ผ์ด์ ๋ชฉ๋ก์ ๋ฐํํฉ๋๋ค.
- ๋ฉ์๋:
GET - ๊ฒฝ๋ก:
/list-apps
์์ฒญ ์์
์๋ต ์์
์ธ์ ๊ด๋ฆฌ¶
์ธ์ ์ ํน์ ์ฌ์ฉ์๊ฐ ์์ด์ ํธ์ ์ํธ ์์ฉํ๋ ๋์์ ์ํ์ ์ด๋ฒคํธ ๊ธฐ๋ก์ ์ ์ฅํฉ๋๋ค.
์ธ์ ์์ฑ ๋๋ ์ ๋ฐ์ดํธ¶
์ ์ธ์ ์ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ์ธ์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ง์ ๋ ID๋ฅผ ๊ฐ์ง ์ธ์ ์ด ์ด๋ฏธ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ํด๋น ์ํ๋ ์ ๊ณต๋ ์ ์ํ๋ก ๋ฎ์ด์ฐ์ฌ์ง๋๋ค.
- ๋ฉ์๋:
POST - ๊ฒฝ๋ก:
/apps/{app_name}/users/{user_id}/sessions/{session_id}
์์ฒญ ๋ณธ๋ฌธ
์์ฒญ ์์
curl -X POST http://localhost:8000/apps/my_sample_agent/users/u_123/sessions/s_abc \
-H "Content-Type: application/json" \
-d '{"visit_count": 5}'
์๋ต ์์
{"id":"s_abc","appName":"my_sample_agent","userId":"u_123","state":{"visit_count":5},"events":[],"lastUpdateTime":1743711430.022186}
์ธ์ ์กฐํ¶
ํน์ ์ธ์ ์ ์ธ๋ถ ์ ๋ณด(ํ์ฌ ์ํ ๋ฐ ๋ชจ๋ ๊ด๋ จ ์ด๋ฒคํธ ํฌํจ)๋ฅผ ๊ฒ์ํฉ๋๋ค.
- ๋ฉ์๋:
GET - ๊ฒฝ๋ก:
/apps/{app_name}/users/{user_id}/sessions/{session_id}
์์ฒญ ์์
์๋ต ์์
{"id":"s_abc","appName":"my_sample_agent","userId":"u_123","state":{"visit_count":5},"events":[...],"lastUpdateTime":1743711430.022186}
์ธ์ ์ญ์ ¶
์ธ์ ๋ฐ ๋ชจ๋ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํฉ๋๋ค.
- ๋ฉ์๋:
DELETE - ๊ฒฝ๋ก:
/apps/{app_name}/users/{user_id}/sessions/{session_id}
์์ฒญ ์์
์๋ต ์์
์ฑ๊ณต์ ์ผ๋ก ์ญ์ ๋๋ฉด 204 No Content ์ํ ์ฝ๋์ ํจ๊ป ๋น ์๋ต์ด ๋ฐํ๋ฉ๋๋ค.
์์ด์ ํธ ์คํ¶
์ด ์๋ํฌ์ธํธ๋ค์ ์์ด์ ํธ์ ์ ๋ฉ์์ง๋ฅผ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์ด์ ํธ ์คํ (๋จ์ผ ์๋ต)¶
์์ด์ ํธ๋ฅผ ์คํํ๊ณ ์คํ์ด ์๋ฃ๋ ํ ์์ฑ๋ ๋ชจ๋ ์ด๋ฒคํธ๋ฅผ ๋จ์ผ JSON ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
- ๋ฉ์๋:
POST - ๊ฒฝ๋ก:
/run
์์ฒญ ๋ณธ๋ฌธ
{
"app_name": "my_sample_agent",
"user_id": "u_123",
"session_id": "s_abc",
"new_message": {
"role": "user",
"parts": [
{ "text": "What is the capital of France?" }
]
}
}
์์ฒญ ์์
curl -X POST http://localhost:8000/run \
-H "Content-Type: application/json" \
-d '{
"app_name": "my_sample_agent",
"user_id": "u_123",
"session_id": "s_abc",
"new_message": {
"role": "user",
"parts": [{"text": "What is the capital of France?"}]
}
}'
์์ด์ ํธ ์คํ (์คํธ๋ฆฌ๋ฐ)¶
์์ด์ ํธ๋ฅผ ์คํํ๊ณ ์ด๋ฒคํธ๊ฐ ์์ฑ๋ ๋๋ง๋ค ์๋ฒ-์ ์ก ์ด๋ฒคํธ(SSE)๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๋ก ์คํธ๋ฆฌ๋ฐํฉ๋๋ค.
- ๋ฉ์๋:
POST - ๊ฒฝ๋ก:
/run_sse
์์ฒญ ๋ณธ๋ฌธ
์์ฒญ ๋ณธ๋ฌธ์ /run๊ณผ ๋์ผํ๋ฉฐ, ์ ํ์ streaming ํ๋๊ทธ๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
{
"app_name": "my_sample_agent",
"user_id": "u_123",
"session_id": "s_abc",
"new_message": {
"role": "user",
"parts": [
{ "text": "What is the weather in New York?" }
]
},
"streaming": true
}
streaming: (์ ํ ์ฌํญ) true๋ก ์ค์ ํ๋ฉด ๋ชจ๋ธ ์๋ต์ ๋ํด ํ ํฐ ์์ค ์คํธ๋ฆฌ๋ฐ์ ํ์ฑํํฉ๋๋ค. ๊ธฐ๋ณธ๊ฐ์ false์
๋๋ค.
์์ฒญ ์์