Skip to content

Commit f9157b3

Browse files
committed
updating code interpreter
1 parent 78cf016 commit f9157b3

File tree

3 files changed

+185
-36
lines changed

3 files changed

+185
-36
lines changed

articles/ai-foundry/agents/how-to/tools/code-interpreter-samples.md

Lines changed: 147 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,3 +516,150 @@ curl --request GET \
516516
```
517517

518518
:::zone-end
519+
520+
521+
:::zone pivot="java"
522+
523+
## Download an example file
524+
525+
Files can be uploaded and then referenced by agents or messages. Once it's uploaded it can be added to the tool utility for referencing. You can find a downloadable example file on [GitHub](https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/ai/ai-agents/data/syntheticCompanyQuarterlyResults.csv).
526+
527+
## Code example
528+
529+
```java
530+
package com.example.agents;
531+
532+
import com.azure.ai.agents.persistent.FilesClient;
533+
import com.azure.ai.agents.persistent.MessagesClient;
534+
import com.azure.ai.agents.persistent.PersistentAgentsAdministrationClient;
535+
import com.azure.ai.agents.persistent.PersistentAgentsClient;
536+
import com.azure.ai.agents.persistent.PersistentAgentsClientBuilder;
537+
import com.azure.ai.agents.persistent.RunsClient;
538+
import com.azure.ai.agents.persistent.ThreadsClient;
539+
import com.azure.ai.agents.persistent.models.CodeInterpreterToolDefinition;
540+
import com.azure.ai.agents.persistent.models.CreateAgentOptions;
541+
import com.azure.ai.agents.persistent.models.CreateRunOptions;
542+
import com.azure.ai.agents.persistent.models.FileDetails;
543+
import com.azure.ai.agents.persistent.models.FileInfo;
544+
import com.azure.ai.agents.persistent.models.FilePurpose;
545+
import com.azure.ai.agents.persistent.models.MessageAttachment;
546+
import com.azure.ai.agents.persistent.models.MessageImageFileContent;
547+
import com.azure.ai.agents.persistent.models.MessageRole;
548+
import com.azure.ai.agents.persistent.models.MessageTextContent;
549+
import com.azure.ai.agents.persistent.models.PersistentAgent;
550+
import com.azure.ai.agents.persistent.models.PersistentAgentThread;
551+
import com.azure.ai.agents.persistent.models.RunStatus;
552+
import com.azure.ai.agents.persistent.models.ThreadMessage;
553+
import com.azure.ai.agents.persistent.models.ThreadRun;
554+
import com.azure.ai.agents.persistent.models.UploadFileRequest;
555+
import com.azure.ai.agents.persistent.models.MessageContent;
556+
import com.azure.core.http.rest.PagedIterable;
557+
import com.azure.core.util.BinaryData;
558+
import com.azure.identity.DefaultAzureCredentialBuilder;
559+
560+
import java.net.URL;
561+
import java.io.File;
562+
import java.io.FileNotFoundException;
563+
import java.net.URISyntaxException;
564+
import java.nio.file.Path;
565+
import java.util.Arrays;
566+
567+
public class AgentExample {
568+
569+
public static void main(String[] args) throws FileNotFoundException, URISyntaxException {
570+
571+
// variables for authenticating requests to the agent service
572+
String projectEndpoint = System.getenv("PROJECT_ENDPOINT");
573+
String modelName = System.getenv("MODEL_DEPLOYMENT_NAME");
574+
575+
PersistentAgentsClientBuilder clientBuilder = new PersistentAgentsClientBuilder().endpoint(projectEndpoint)
576+
.credential(new DefaultAzureCredentialBuilder().build());
577+
PersistentAgentsClient agentsClient = clientBuilder.buildClient();
578+
PersistentAgentsAdministrationClient administrationClient = agentsClient.getPersistentAgentsAdministrationClient();
579+
ThreadsClient threadsClient = agentsClient.getThreadsClient();
580+
MessagesClient messagesClient = agentsClient.getMessagesClient();
581+
RunsClient runsClient = agentsClient.getRunsClient();
582+
FilesClient filesClient = agentsClient.getFilesClient();
583+
584+
Path myFile = getFile("syntheticCompanyQuarterlyResults.csv");
585+
586+
String agentName = "code_interpreter_file_attachment_example";
587+
CodeInterpreterToolDefinition ciTool = new CodeInterpreterToolDefinition();
588+
CreateAgentOptions createAgentOptions = new CreateAgentOptions(modelName).setName(agentName).setInstructions("You are a helpful agent").setTools(Arrays.asList(ciTool));
589+
PersistentAgent agent = administrationClient.createAgent(createAgentOptions);
590+
591+
FileInfo uploadedFile = filesClient.uploadFile(new UploadFileRequest(
592+
new FileDetails(BinaryData.fromFile(myFile))
593+
.setFilename("sample.csv"), FilePurpose.AGENTS));
594+
595+
MessageAttachment messageAttachment = new MessageAttachment(Arrays.asList(BinaryData.fromObject(ciTool))).setFileId(uploadedFile.getId());
596+
597+
PersistentAgentThread thread = threadsClient.createThread();
598+
ThreadMessage createdMessage = messagesClient.createMessage(
599+
thread.getId(),
600+
MessageRole.USER,
601+
"Could you analyze the uploaded CSV file for me?",
602+
Arrays.asList(messageAttachment),
603+
null);
604+
605+
try {
606+
//run agent
607+
CreateRunOptions createRunOptions = new CreateRunOptions(thread.getId(), agent.getId()).setAdditionalInstructions("");
608+
ThreadRun threadRun = runsClient.createRun(createRunOptions);
609+
610+
waitForRunCompletion(thread.getId(), threadRun, runsClient);
611+
printRunMessages(messagesClient, thread.getId());
612+
} catch (InterruptedException e) {
613+
throw new RuntimeException(e);
614+
} finally {
615+
//cleanup
616+
threadsClient.deleteThread(thread.getId());
617+
administrationClient.deleteAgent(agent.getId());
618+
}
619+
}
620+
// A helper function to print messages from the agent
621+
public static void printRunMessages(MessagesClient messagesClient, String threadId) {
622+
623+
PagedIterable<ThreadMessage> runMessages = messagesClient.listMessages(threadId);
624+
for (ThreadMessage message : runMessages) {
625+
System.out.print(String.format("%1$s - %2$s : ", message.getCreatedAt(), message.getRole()));
626+
for (MessageContent contentItem : message.getContent()) {
627+
if (contentItem instanceof MessageTextContent) {
628+
System.out.print((((MessageTextContent) contentItem).getText().getValue()));
629+
} else if (contentItem instanceof MessageImageFileContent) {
630+
String imageFileId = (((MessageImageFileContent) contentItem).getImageFile().getFileId());
631+
System.out.print("Image from ID: " + imageFileId);
632+
}
633+
System.out.println();
634+
}
635+
}
636+
}
637+
638+
// a helper function to wait until a run has completed running
639+
public static void waitForRunCompletion(String threadId, ThreadRun threadRun, RunsClient runsClient)
640+
throws InterruptedException {
641+
642+
do {
643+
Thread.sleep(500);
644+
threadRun = runsClient.getRun(threadId, threadRun.getId());
645+
}
646+
while (
647+
threadRun.getStatus() == RunStatus.QUEUED
648+
|| threadRun.getStatus() == RunStatus.IN_PROGRESS
649+
|| threadRun.getStatus() == RunStatus.REQUIRES_ACTION);
650+
651+
if (threadRun.getStatus() == RunStatus.FAILED) {
652+
System.out.println(threadRun.getLastError().getMessage());
653+
}
654+
}
655+
private static Path getFile(String fileName) throws FileNotFoundException, URISyntaxException {
656+
URL resource = AgentExample.class.getClassLoader().getResource(fileName);
657+
if (resource == null) {
658+
throw new FileNotFoundException("File not found");
659+
}
660+
File file = new File(resource.toURI());
661+
return file.toPath();
662+
}
663+
}
664+
```
665+
:::zone-end

articles/ai-foundry/agents/includes/quickstart-java.md

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -81,42 +81,6 @@ import java.util.Arrays;
8181

8282
public class AgentSample {
8383

84-
// A helper function to print messages from the agent
85-
public static void printRunMessages(MessagesClient messagesClient, String threadId) {
86-
87-
PagedIterable<ThreadMessage> runMessages = messagesClient.listMessages(threadId);
88-
for (ThreadMessage message : runMessages) {
89-
System.out.print(String.format("%1$s - %2$s : ", message.getCreatedAt(), message.getRole()));
90-
for (MessageContent contentItem : message.getContent()) {
91-
if (contentItem instanceof MessageTextContent) {
92-
System.out.print((((MessageTextContent) contentItem).getText().getValue()));
93-
} else if (contentItem instanceof MessageImageFileContent) {
94-
String imageFileId = (((MessageImageFileContent) contentItem).getImageFile().getFileId());
95-
System.out.print("Image from ID: " + imageFileId);
96-
}
97-
System.out.println();
98-
}
99-
}
100-
}
101-
102-
// a helper function to wait until a run has completed running
103-
public static void waitForRunCompletion(String threadId, ThreadRun threadRun, RunsClient runsClient)
104-
throws InterruptedException {
105-
106-
do {
107-
Thread.sleep(500);
108-
threadRun = runsClient.getRun(threadId, threadRun.getId());
109-
}
110-
while (
111-
threadRun.getStatus() == RunStatus.QUEUED
112-
|| threadRun.getStatus() == RunStatus.IN_PROGRESS
113-
|| threadRun.getStatus() == RunStatus.REQUIRES_ACTION);
114-
115-
if (threadRun.getStatus() == RunStatus.FAILED) {
116-
System.out.println(threadRun.getLastError().getMessage());
117-
}
118-
}
119-
12084
public static void main(String[] args) {
12185
// variables for authenticating requests to the agent service
12286
String projectEndpoint = System.getenv("PROJECT_ENDPOINT");
@@ -162,5 +126,41 @@ public class AgentSample {
162126
administrationClient.deleteAgent(agent.getId());
163127
}
164128
}
129+
130+
// A helper function to print messages from the agent
131+
public static void printRunMessages(MessagesClient messagesClient, String threadId) {
132+
133+
PagedIterable<ThreadMessage> runMessages = messagesClient.listMessages(threadId);
134+
for (ThreadMessage message : runMessages) {
135+
System.out.print(String.format("%1$s - %2$s : ", message.getCreatedAt(), message.getRole()));
136+
for (MessageContent contentItem : message.getContent()) {
137+
if (contentItem instanceof MessageTextContent) {
138+
System.out.print((((MessageTextContent) contentItem).getText().getValue()));
139+
} else if (contentItem instanceof MessageImageFileContent) {
140+
String imageFileId = (((MessageImageFileContent) contentItem).getImageFile().getFileId());
141+
System.out.print("Image from ID: " + imageFileId);
142+
}
143+
System.out.println();
144+
}
145+
}
146+
}
147+
148+
// a helper function to wait until a run has completed running
149+
public static void waitForRunCompletion(String threadId, ThreadRun threadRun, RunsClient runsClient)
150+
throws InterruptedException {
151+
152+
do {
153+
Thread.sleep(500);
154+
threadRun = runsClient.getRun(threadId, threadRun.getId());
155+
}
156+
while (
157+
threadRun.getStatus() == RunStatus.QUEUED
158+
|| threadRun.getStatus() == RunStatus.IN_PROGRESS
159+
|| threadRun.getStatus() == RunStatus.REQUIRES_ACTION);
160+
161+
if (threadRun.getStatus() == RunStatus.FAILED) {
162+
System.out.println(threadRun.getLastError().getMessage());
163+
}
164+
}
165165
}
166166
```

zone-pivots/zone-pivot-groups.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1216,6 +1216,8 @@ groups:
12161216
title: JavaScript
12171217
- id: python
12181218
title: Python
1219+
- id: java
1220+
title: Java
12191221
- id: rest-api
12201222
title: REST API
12211223
- id: selection-deep-research

0 commit comments

Comments
 (0)