@@ -79,8 +79,9 @@ import com.azure.core.http.rest.PagedIterable;
79
79
import com.azure.identity.DefaultAzureCredentialBuilder ;
80
80
import java.util.Arrays ;
81
81
82
- public class Main {
82
+ public class AgentSample {
83
83
84
+ // A helper function to print messages from the agent
84
85
public static void printRunMessages (MessagesClient messagesClient , String threadId ) {
85
86
86
87
PagedIterable<ThreadMessage > runMessages = messagesClient. listMessages(threadId);
@@ -97,11 +98,11 @@ public class Main {
97
98
}
98
99
}
99
100
}
101
+
102
+ // a helper function to wait until a run has completed running
100
103
public static void waitForRunCompletion (String threadId , ThreadRun threadRun , RunsClient runsClient )
101
104
throws InterruptedException {
102
105
103
- // BEGIN: com.azure.ai.agents.persistent.SampleUtils.waitForRunCompletion
104
-
105
106
do {
106
107
Thread . sleep(500 );
107
108
threadRun = runsClient. getRun(threadId, threadRun. getId());
@@ -114,14 +115,14 @@ public class Main {
114
115
if (threadRun. getStatus() == RunStatus . FAILED ) {
115
116
System . out. println(threadRun. getLastError(). getMessage());
116
117
}
117
-
118
- // END: com.azure.ai.agents.persistent.SampleUtils.waitForRunCompletion
119
118
}
120
- public static void main (String [] args ) {
121
119
120
+ public static void main (String [] args ) {
121
+ // variables for authenticating requests to the agent service
122
122
String projectEndpoint = System . getenv(" PROJECT_ENDPOINT" );
123
123
String modelName = System . getenv(" MODEL_DEPLOYMENT_NAME" );
124
124
125
+ // initialize clients to manage various aspects of agent runtime
125
126
PersistentAgentsClientBuilder clientBuilder = new PersistentAgentsClientBuilder ()
126
127
.endpoint(projectEndpoint)
127
128
.credential(new DefaultAzureCredentialBuilder (). build());
@@ -130,32 +131,33 @@ public class Main {
130
131
ThreadsClient threadsClient = agentsClient. getThreadsClient();
131
132
MessagesClient messagesClient = agentsClient. getMessagesClient();
132
133
RunsClient runsClient = agentsClient. getRunsClient();
133
-
134
- String agentName = " my-agent" ;
134
+
135
+
136
+ String agentName = " my-agent" ; // the name of the agent
135
137
CreateAgentOptions createAgentOptions = new CreateAgentOptions (modelName)
136
138
.setName(agentName)
137
- .setInstructions(" You are a helpful agent" )
139
+ .setInstructions(" You are a helpful agent" ) // system insturctions
138
140
.setTools(Arrays . asList(new CodeInterpreterToolDefinition ()));
139
141
PersistentAgent agent = administrationClient. createAgent(createAgentOptions);
140
142
141
143
PersistentAgentThread thread = threadsClient. createThread();
142
144
ThreadMessage createdMessage = messagesClient. createMessage(
143
145
thread. getId(),
144
146
MessageRole . USER ,
145
- " I need to solve the equation `3x + 11 = 14`. Can you help me?" );
147
+ " I need to solve the equation `3x + 11 = 14`. Can you help me?" ); // The message to the agent
146
148
147
149
try {
148
- // run agent
150
+ // run the agent
149
151
CreateRunOptions createRunOptions = new CreateRunOptions (thread. getId(), agent. getId())
150
152
.setAdditionalInstructions(" " );
151
153
ThreadRun threadRun = runsClient. createRun(createRunOptions);
152
-
154
+ // wait for the run to complete before printing the message
153
155
waitForRunCompletion(thread. getId(), threadRun, runsClient);
154
156
printRunMessages(messagesClient, thread. getId());
155
157
} catch (InterruptedException e) {
156
158
throw new RuntimeException (e);
157
159
} finally {
158
- // cleanup
160
+ // cleanup - remove or comment out these lines if you want to keep the agent
159
161
threadsClient. deleteThread(thread. getId());
160
162
administrationClient. deleteAgent(agent. getId());
161
163
}
0 commit comments