import com.volcengine.ark.runtime.models.agent.Agent;
import com.volcengine.ark.runtime.models.agent.CreateAgentRequest;
import com.volcengine.ark.runtime.models.agent.ModelConfig;
import com.volcengine.ark.runtime.models.agent.ToolItem;
import com.volcengine.ark.runtime.models.environment.CreateEnvironmentRequest;
import com.volcengine.ark.runtime.models.environment.EnvConfig;
import com.volcengine.ark.runtime.models.environment.EnvConfigType;
import com.volcengine.ark.runtime.models.environment.Environment;
import com.volcengine.ark.runtime.models.environment.NetworkingConfig;
import com.volcengine.ark.runtime.models.environment.NetworkingType;
import com.volcengine.ark.runtime.models.session.AgentIdentifier;
import com.volcengine.ark.runtime.models.session.CreateSessionRequest;
import com.volcengine.ark.runtime.models.session.ManagedAgentsMessageContentBlock;
import com.volcengine.ark.runtime.models.session.ManagedAgentsTextBlock;
import com.volcengine.ark.runtime.models.session.ManagedAgentsUserMessageEventParams;
import com.volcengine.ark.runtime.models.session.SendSessionEventsRequest;
import com.volcengine.ark.runtime.models.session.Session;
import com.volcengine.ark.runtime.service.ArkService;
import okhttp3.ResponseBody;
import okio.BufferedSource;
import retrofit2.Response;
import java.util.Arrays;
public class ManagedAgentsQuickStart {
public static void main(String[] args) throws Exception {
ArkService service = ArkService.builder()
.apiKey(System.getenv("ARK_API_KEY"))
.baseUrl("https://ark.cn-beijing.volces.com/api/v3")
String suffix = String.valueOf(System.currentTimeMillis());
Agent agent = service.createAgent(
CreateAgentRequest.builder()
.name("quick-start-agent-" + suffix)
.model(ModelConfig.builder().id("doubao-seed-2-1-pro-260915").build())
.tools(Arrays.asList(ToolItem.builder().type("agent_toolset_20260916").build()))
Environment environment = service.createEnvironment(
CreateEnvironmentRequest.builder()
.name("quick-start-env-" + suffix)
.config(EnvConfig.builder()
.type(EnvConfigType.CLOUD)
.networking(NetworkingConfig.builder()
.type(NetworkingType.UNRESTRICTED)
Session session = service.createSession(
CreateSessionRequest.builder()
.agent(AgentIdentifier.ofString(agent.getId()))
.environmentId(environment.getId())
.title("Quickstart session")
ManagedAgentsTextBlock text = ManagedAgentsTextBlock.builder()
.text("用 Python 输出前 20 个斐波那契数。")
ManagedAgentsUserMessageEventParams event =
ManagedAgentsUserMessageEventParams.builder()
.content(Arrays.<ManagedAgentsMessageContentBlock>asList(text))
Response<ResponseBody> response =
service.streamSessionEvents(session.getId()).execute();
if (!response.isSuccessful() || response.body() == null) {
throw new IllegalStateException("Stream request failed: " + response.code());
try (ResponseBody body = response.body()) {
BufferedSource source = body.source();
service.sendSessionEvents(
SendSessionEventsRequest.builder()
.events(Arrays.asList(event))
boolean agentFinished = false;
while ((line = source.readUtf8Line()) != null) {
if (line.startsWith("data:")) {
System.out.println(line.substring(5).trim());
if (line.contains("session.status_idle")
|| line.contains("session.status_terminated")) {
throw new IllegalStateException(
"SSE stream closed before the Agent finished.");
service.deleteSession(session.getId());
service.deleteEnvironment(environment.getId());
service.deleteAgent(agent.getId());
service.shutdownExecutor();