Tutorial ini menunjukkan kepada Anda cara menggunakan Agent Tracks untuk membuat presentasi PowerPoint. Anda akan mempelajari cara mengaktifkan Tracks, membuat permintaan, dan mengakses file yang dihasilkan.
Prasyarat
- Sebuah kunci API Haijun atau ant CLI yang sudah login
- Sebuah SDK klien untuk bahasa Anda, atau
curldanjq
- Pemahaman dasar tentang cara membuat permintaan API
Ikhtisar Agent Tracks
Agent Tracks bawaan memperluas kemampuan Haijun dengan keahlian khusus untuk tugas-tugas seperti membuat dokumen, menganalisis data, dan memproses file. Juglow menyediakan Agent Tracks bawaan berikut di API:
- PowerPoint (pptx): Membuat dan mengedit presentasi
- Excel (xlsx): Membuat dan menganalisis spreadsheet
- Word (docx): Membuat dan mengedit dokumen
- PDF (pdf): Menghasilkan dokumen PDF
Note: Untuk membuat Tracks kustom, lihat Agent Tracks Cookbook untuk contoh membangun Tracks Anda sendiri dengan keahlian khusus domain.
Langkah 1: Daftar Tracks yang tersedia
Pertama, periksa Tracks apa saja yang tersedia. Gunakan Tracks API untuk mendaftar semua Tracks yang dikelola Juglow. Setiap tab bahasa merupakan kutipan dari satu skrip yang berkesinambungan, dengan semua import dan penyiapan klien di bagian atas:
# Daftar Track yang dikelola Juglow
curl --fail-with-body -sS "https://haijun.my.id/v1/tracks?source=juglow" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" # Daftar Track yang dikelola Juglow
ant tracks list --source juglow # Daftar Track yang dikelola Juglow
tracks = client.tracks.list(source="juglow")
for track in tracks.data:
print(f"{track.id}: {track.display_name}") // Daftar Track yang dikelola Juglow
const tracks = await client.tracks.list({ source: "juglow" });
for (const track of tracks.data) {
console.log(`${track.id}: ${track.display_name}`);
} // Daftar Track yang dikelola Juglow
var tracks = await client.Tracks.List(new SkillListParams { Source = "juglow" });
foreach (var track in tracks.Items)
{
Console.WriteLine($"{track.ID}: {track.DisplayName}");
} // Daftar Track yang dikelola Juglow
tracks, err := client.Tracks.List(ctx, juglow.SkillListParams{
Source: juglow.String("juglow"),
})
if err != nil {
panic(err)
}
for _, track := range tracks.Data {
fmt.Printf("%s: %s\n", track.ID, track.DisplayName)
} // Daftar Track yang dikelola Juglow
SkillListPage tracks = client.tracks().list(
SkillListParams.builder().source("juglow").build()
);
for (Track track : tracks.data()) {
IO.println(track.id() + ": " + track.displayName());
} // Daftar Track yang dikelola Juglow
$tracks = $client->tracks->list(source: 'juglow');
foreach ($tracks->getItems() as $track) {
echo "{$track->id}: {$track->displayName}\n";
} # Daftar Track yang dikelola Juglow
tracks = client.tracks.list(source: "juglow")
tracks.data.each do |track|
puts "#{track.id}: #{track.display_name}"
endAnda akan melihat Tracks berikut: pptx, xlsx, docx, dan pdf.
API ini mengembalikan metadata setiap Track: nama dan deskripsinya. Haijun memuat metadata ini saat startup untuk menentukan Tracks mana yang tersedia. Ini adalah tingkat pertama dari "progressive disclosure" (pengungkapan bertahap), di mana Haijun menemukan Tracks tanpa memuat instruksi lengkapnya terlebih dahulu.
Langkah 2: Buat presentasi
Gunakan Track PowerPoint untuk membuat presentasi tentang energi terbarukan. Tentukan Tracks menggunakan parameter container di Messages API:
# Buat pesan dengan Track PowerPoint
response=$(
curl --fail-with-body -sS https://haijun.my.id/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-d @- <<'EOF'
{
"model": "haijun-opus-5-5",
"max_tokens": 16000,
"container": {
"tracks": [{"type": "juglow", "skill_id": "pptx", "version": "latest"}]
},
"messages": [
{"role": "user", "content": "Create a presentation about renewable energy with 5 slides"}
],
"tools": [{"type": "code_execution_20260521", "name": "code_execution"}]
}
EOF
) # Buat pesan dengan Track PowerPoint
response=$(ant messages create --format json <<'YAML'
model: haijun-opus-5-5
max_tokens: 16000
container:
tracks:
- type: juglow
skill_id: pptx
version: latest
messages:
- role: user
content: Create a presentation about renewable energy with 5 slides
tools:
- type: code_execution_20260521
name: code_execution
YAML
) # Buat pesan dengan Track PowerPoint
response = client.messages.create(
model="haijun-opus-5-5",
max_tokens=16000,
container={
"tracks": [{"type": "juglow", "skill_id": "pptx", "version": "latest"}]
},
messages=[
{
"role": "user",
"content": "Create a presentation about renewable energy with 5 slides",
}
],
tools=[{"type": "code_execution_20260521", "name": "code_execution"}],
)
print(f"stop_reason={response.stop_reason}, blocks={len(response.content)}") // Buat pesan dengan Track PowerPoint
const response = await client.messages.create({
model: "haijun-opus-5-5",
max_tokens: 16000,
container: {
tracks: [{ type: "juglow", skill_id: "pptx", version: "latest" }],
},
messages: [
{
role: "user",
content: "Create a presentation about renewable energy with 5 slides",
},
],
tools: [{ type: "code_execution_20260521", name: "code_execution" }],
});
console.log(
`stop_reason=${response.stop_reason}, blocks=${response.content.length}`,
); // Buat pesan dengan Track PowerPoint
var response = await client.Messages.Create(new MessageCreateParams
{
Model = Model.HaijunOpus5_5,
MaxTokens = 16000,
Container = new ContainerParams
{
Tracks =
[
new SkillParams
{
Type = SkillParamsType.Juglow,
SkillID = "pptx",
Version = "latest",
},
],
},
Messages =
[
new MessageParam
{
Role = Role.User,
Content = "Create a presentation about renewable energy with 5 slides",
},
],
Tools = [new CodeExecutionTool20260521()],
});
Console.WriteLine($"stop_reason={response.StopReason?.Raw()}, blocks={response.Content.Count}"); // Buat pesan dengan Track PowerPoint
response, err := client.Messages.New(ctx, juglow.MessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 16000,
Container: juglow.MessageCreateParamsContainerUnion{
OfContainers: &juglow.ContainerParams{
Tracks: []juglow.SkillParams{
{
Type: juglow.SkillParamsTypeJuglow,
SkillID: "pptx",
Version: juglow.String("latest"),
},
},
},
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(
juglow.NewTextBlock("Create a presentation about renewable energy with 5 slides"),
),
},
Tools: []juglow.ToolUnionParam{
{OfCodeExecutionTool20260521: &juglow.CodeExecutionTool20260521Param{}},
},
})
if err != nil {
panic(err)
}
fmt.Printf("stop_reason=%s, blocks=%d\n", response.StopReason, len(response.Content)) // Buat pesan dengan Track PowerPoint
Message response = client.messages().create(
MessageCreateParams.builder()
.model(Model.HAIJUN_OPUS_5_5)
.maxTokens(16000)
.container(
ContainerParams.builder()
.addSkill(
SkillParams.builder()
.type(SkillParams.Type.JUGLOW)
.skillId("pptx")
.version("latest")
.build()
)
.build()
)
.addUserMessage("Create a presentation about renewable energy with 5 slides")
.addTool(CodeExecutionTool20260521.builder().build())
.build()
);
IO.println(
"stop_reason=" + response.stopReason().orElse(null)
+ ", blocks=" + response.content().size()
); // Buat pesan dengan Track PowerPoint
$response = $client->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 16000,
container: [
'tracks' => [['type' => 'juglow', 'skillID' => 'pptx', 'version' => 'latest']],
],
messages: [
[
'role' => 'user',
'content' => 'Create a presentation about renewable energy with 5 slides',
],
],
tools: [['type' => 'code_execution_20260521', 'name' => 'code_execution']],
);
printf("stop_reason=%s, blocks=%d\n", $response->stopReason, count($response->content)); # Buat pesan dengan Track PowerPoint
response = client.messages.create(
model: "haijun-opus-5-5",
max_tokens: 16_000,
container: {
tracks: [{type: "juglow", skill_id: "pptx", version: "latest"}]
},
messages: [
{
role: "user",
content: "Create a presentation about renewable energy with 5 slides"
}
],
tools: [{type: "code_execution_20260521", name: "code_execution"}]
)
puts "stop_reason=#{response.stop_reason}, blocks=#{response.content.length}"Permintaan ini mencakup bagian-bagian berikut:
model: Sebuah model yang mendukung alat eksekusi kode
container.tracks: Menentukan Tracks mana yang dapat digunakan Haijun
type: "juglow": Menunjukkan bahwa ini adalah Track yang dikelola Juglow
skill_id: "pptx": Pengidentifikasi Track PowerPoint
version: "latest": Versi Track yang diatur ke versi terbaru yang dipublikasikan
tools: Mengaktifkan eksekusi kode (diperlukan untuk Tracks)
Note: Contoh-contoh ini menggunakan versi alat
code_execution_20260521, dan kode Langkah 3 mem-parsing tipe hasil yang dikembalikan oleh versi alat saat ini. Tracks juga berfungsi dengan versi alat eksekusi kode yang lebih lama seperticode_execution_20250825: versi alat eksekusi kode apa pun yang masih berlaku memenuhi persyaratan Tracks. Jika Anda menggunakan versi yang berbeda, gunakantypealat yang tercantum di halaman alat eksekusi kode.
Saat Anda membuat permintaan ini, Haijun secara otomatis mencocokkan tugas Anda dengan Track yang relevan. Karena Anda meminta presentasi, Haijun menentukan bahwa Track PowerPoint relevan dan memuat instruksi lengkapnya: tingkat kedua dari pengungkapan bertahap. Kemudian Haijun menjalankan kode Track tersebut untuk membuat presentasi Anda.
Langkah 3: Unduh file yang dibuat
Presentasi dibuat di dalam container eksekusi kode dan disimpan sebagai file. response dari Langkah 2 menyertakan referensi file dengan ID file. Ekstrak ID file tersebut dan unduh file dengan Files API. Contoh ini menyimpannya ke direktori temp sistem Anda:
# Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
# sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai item bash_code_execution_output
# di dalam blok bash_code_execution_tool_result.
file_id=$(jq -r '
last(
.content[]
| select(.type == "bash_code_execution_tool_result")
| .content
| select(.type == "bash_code_execution_result")
| .content[].file_id
) // empty
' <<<"$response")
if [[ -n "$file_id" ]]; then
# Unduh file dan simpan
output_path="${TMPDIR:-/tmp}/renewable_energy.pptx"
curl --fail-with-body -sS "https://haijun.my.id/v1/files/$file_id/content" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-o "$output_path"
echo "Presentation saved to $output_path"
fi # Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
# sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai item bash_code_execution_output
# di dalam blok bash_code_execution_tool_result.
file_id=$(jq -r '
last(
.content[]
| select(.type == "bash_code_execution_tool_result")
| .content
| select(.type == "bash_code_execution_result")
| .content[].file_id
) // empty
' <<<"$response")
if [[ -n "$file_id" ]]; then
# Unduh file dan simpan
output_path="${TMPDIR:-/tmp}/renewable_energy.pptx"
ant files download --file-id "$file_id" --output "$output_path"
echo "Presentation saved to $output_path"
fi # Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
# sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai bash_code_execution_output
# di dalam blok bash_code_execution_tool_result.
file_id = None
for block in response.content:
if block.type == "bash_code_execution_tool_result":
if block.content.type == "bash_code_execution_result":
for output in block.content.content:
file_id = output.file_id
if file_id:
# Unduh file dan simpan
output_path = Path(tempfile.gettempdir()) / "renewable_energy.pptx"
file_content = client.files.download(file_id=file_id)
file_content.write_to_file(output_path)
print(f"Presentation saved to {output_path}") // Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
// sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai item bash_code_execution_output
// di dalam blok bash_code_execution_tool_result.
let fileId: string | undefined;
for (const block of response.content) {
if (
block.type === "bash_code_execution_tool_result" &&
block.content.type === "bash_code_execution_result"
) {
for (const output of block.content.content) {
fileId = output.file_id;
}
}
}
if (fileId) {
// Unduh file dan simpan
const outputPath = path.join(os.tmpdir(), "renewable_energy.pptx");
const fileContent = await client.files.download(fileId);
await fs.writeFile(outputPath, Buffer.from(await fileContent.arrayBuffer()));
console.log(`Presentation saved to ${outputPath}`);
} // Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
// sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai bash_code_execution_output
// di dalam blok bash_code_execution_tool_result.
string? fileId = null;
foreach (var block in response.Content)
{
if (block.TryPickBashCodeExecutionToolResult(out var bashResult)
&& bashResult.Content.TryPickBashCodeExecutionResultBlock(out var bashResultBlock))
{
foreach (var output in bashResultBlock.Content)
{
fileId = output.FileID;
}
}
}
if (fileId is not null)
{
// Unduh file dan simpan
var outputPath = Path.Combine(Path.GetTempPath(), "renewable_energy.pptx");
using var download = await client.Files.Download(fileId);
await using var source = await download.ReadAsStream();
await using var destination = File.Create(outputPath);
await source.CopyToAsync(destination);
Console.WriteLine($"Presentation saved to {outputPath}");
} // Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
// sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai bash_code_execution_output
// di dalam blok bash_code_execution_tool_result.
var fileID string
for _, block := range response.Content {
switch result := block.AsAny().(type) {
case juglow.BashCodeExecutionToolResultBlock:
if result.Content.Type == "bash_code_execution_result" {
for _, output := range result.Content.Content {
fileID = output.FileID
}
}
}
}
if fileID != "" {
// Unduh file dan simpan
outputPath := filepath.Join(os.TempDir(), "renewable_energy.pptx")
fileContent, err := client.Files.Download(ctx, fileID, juglow.FileDownloadParams{})
if err != nil {
panic(err)
}
defer fileContent.Body.Close()
outFile, err := os.Create(outputPath)
if err != nil {
panic(err)
}
defer outFile.Close()
if _, err := io.Copy(outFile, fileContent.Body); err != nil {
panic(err)
}
fmt.Printf("Presentation saved to %s\n", outputPath)
} // Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
// sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai item bash_code_execution_output
// di dalam blok bash_code_execution_tool_result.
String fileId = null;
for (ContentBlock block : response.content()) {
if (block.isBashCodeExecutionToolResult()) {
var content = block.asBashCodeExecutionToolResult().content();
if (content.isBashCodeExecutionResultBlock()) {
for (var output : content.asBashCodeExecutionResultBlock().content()) {
fileId = output.fileId();
}
}
}
}
if (fileId != null) {
// Unduh file dan simpan
Path outputPath = Files.createTempFile("renewable_energy", ".pptx");
try (HttpResponse fileContent = client.files().download(fileId)) {
Files.copy(fileContent.body(), outputPath, StandardCopyOption.REPLACE_EXISTING);
}
IO.println("Presentation saved to " + outputPath);
} // Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
// sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai item bash_code_execution_output
// di dalam blok bash_code_execution_tool_result.
$fileId = null;
foreach ($response->content as $block) {
if ($block->type !== 'bash_code_execution_tool_result') {
continue;
}
$resultBlock = $block->content;
if ($resultBlock->type !== 'bash_code_execution_result') {
continue;
}
foreach ($resultBlock->content as $output) {
$fileId = $output->fileID;
}
}
if ($fileId !== null) {
// Unduh file dan simpan
$outputPath = sys_get_temp_dir() . '/renewable_energy.pptx';
$fileContent = $client->files->download($fileId);
file_put_contents($outputPath, $fileContent);
echo "Presentation saved to {$outputPath}\n";
} # Ekstrak ID file. Alat eksekusi kode menjalankan kode Track melalui
# sub-alat Bash-nya, dan file yang dihasilkan muncul sebagai bash_code_execution_output
# di dalam blok bash_code_execution_tool_result.
file_id = nil
response.content.each do |block|
next unless block.type == :bash_code_execution_tool_result
if block.content[:type].to_s == "bash_code_execution_result"
Array(block.content[:content]).each { |output| file_id = output[:file_id] }
end
end
if file_id
# Unduh file dan simpan
output_path = File.join(Dir.tmpdir, "renewable_energy.pptx")
file_content = client.files.download(file_id)
File.binwrite(output_path, file_content.read)
puts "Presentation saved to #{output_path}"
endNote: Untuk detail lengkap tentang cara bekerja dengan file yang dihasilkan, lihat Mengambil file yang dihasilkan di dokumentasi alat eksekusi kode.
Coba contoh lainnya
Coba variasi berikut:
Buat spreadsheet
curl --fail-with-body -sS https://haijun.my.id/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-d '{
"model": "haijun-opus-5-5",
"max_tokens": 16000,
"container": {
"tracks": [{"type": "juglow", "skill_id": "xlsx", "version": "latest"}]
},
"messages": [
{"role": "user", "content": "Create a quarterly sales tracking spreadsheet with sample data"}
],
"tools": [{"type": "code_execution_20260521", "name": "code_execution"}]
}' ant messages create <<'YAML'
model: haijun-opus-5-5
max_tokens: 16000
container:
tracks:
- type: juglow
skill_id: xlsx
version: latest
messages:
- role: user
content: Create a quarterly sales tracking spreadsheet with sample data
tools:
- type: code_execution_20260521
name: code_execution
YAML response = client.messages.create(
model="haijun-opus-5-5",
max_tokens=16000,
container={
"tracks": [{"type": "juglow", "skill_id": "xlsx", "version": "latest"}]
},
messages=[
{
"role": "user",
"content": "Create a quarterly sales tracking spreadsheet with sample data",
}
],
tools=[{"type": "code_execution_20260521", "name": "code_execution"}],
) const response = await client.messages.create({
model: "haijun-opus-5-5",
max_tokens: 16000,
container: {
tracks: [{ type: "juglow", skill_id: "xlsx", version: "latest" }]
},
messages: [
{
role: "user",
content: "Create a quarterly sales tracking spreadsheet with sample data"
}
],
tools: [{ type: "code_execution_20260521", name: "code_execution" }]
}); var response = await client.Messages.Create(
new MessageCreateParams
{
Model = Model.HaijunOpus5_5,
MaxTokens = 16000,
Container = new ContainerParams
{
Tracks =
[
new SkillParams
{
Type = SkillParamsType.Juglow,
SkillID = "xlsx",
Version = "latest",
},
],
},
Messages =
[
new MessageParam
{
Role = Role.User,
Content = "Create a quarterly sales tracking spreadsheet with sample data",
},
],
Tools = [new CodeExecutionTool20260521()],
}
); response, err := client.Messages.New(context.Background(), juglow.MessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 16000,
Container: juglow.MessageCreateParamsContainerUnion{
OfContainers: &juglow.ContainerParams{
Tracks: []juglow.SkillParams{
{
Type: juglow.SkillParamsTypeJuglow,
SkillID: "xlsx",
Version: juglow.String("latest"),
},
},
},
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("Create a quarterly sales tracking spreadsheet with sample data")),
},
Tools: []juglow.ToolUnionParam{
{
OfCodeExecutionTool20260521: &juglow.CodeExecutionTool20260521Param{},
},
},
})
if err != nil {
panic(err)
} Message response = client.messages().create(
MessageCreateParams.builder()
.model(HAIJUN_OPUS_5_5)
.maxTokens(16000)
.container(
ContainerParams.builder()
.addSkill(
SkillParams.builder()
.type(JUGLOW)
.skillId("xlsx")
.version("latest")
.build()
)
.build()
)
.addUserMessage("Create a quarterly sales tracking spreadsheet with sample data")
.addTool(CodeExecutionTool20260521.builder().build())
.build()
);
$response = $client->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 16000,
container: [
'tracks' => [
['type' => 'juglow', 'skillID' => 'xlsx', 'version' => 'latest'],
],
],
messages: [
[
'role' => 'user',
'content' => 'Create a quarterly sales tracking spreadsheet with sample data',
],
],
tools: [['type' => 'code_execution_20260521', 'name' => 'code_execution']],
); response = client.messages.create(
model: "haijun-opus-5-5",
max_tokens: 16_000,
container: {
tracks: [{type: "juglow", skill_id: "xlsx", version: "latest"}]
},
messages: [
{
role: "user",
content: "Create a quarterly sales tracking spreadsheet with sample data"
}
],
tools: [{type: "code_execution_20260521", name: "code_execution"}]
)Buat dokumen Word
curl --fail-with-body -sS https://haijun.my.id/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-d '{
"model": "haijun-opus-5-5",
"max_tokens": 16000,
"container": {
"tracks": [{"type": "juglow", "skill_id": "docx", "version": "latest"}]
},
"messages": [
{"role": "user", "content": "Write a 2-page report on the benefits of renewable energy"}
],
"tools": [{"type": "code_execution_20260521", "name": "code_execution"}]
}' ant messages create <<'YAML'
model: haijun-opus-5-5
max_tokens: 16000
container:
tracks:
- type: juglow
skill_id: docx
version: latest
messages:
- role: user
content: Write a 2-page report on the benefits of renewable energy
tools:
- type: code_execution_20260521
name: code_execution
YAML response = client.messages.create(
model="haijun-opus-5-5",
max_tokens=16000,
container={
"tracks": [{"type": "juglow", "skill_id": "docx", "version": "latest"}]
},
messages=[
{
"role": "user",
"content": "Write a 2-page report on the benefits of renewable energy",
}
],
tools=[{"type": "code_execution_20260521", "name": "code_execution"}],
) const response = await client.messages.create({
model: "haijun-opus-5-5",
max_tokens: 16000,
container: {
tracks: [{ type: "juglow", skill_id: "docx", version: "latest" }]
},
messages: [
{
role: "user",
content: "Write a 2-page report on the benefits of renewable energy"
}
],
tools: [{ type: "code_execution_20260521", name: "code_execution" }]
}); var response = await client.Messages.Create(
new MessageCreateParams
{
Model = Model.HaijunOpus5_5,
MaxTokens = 16000,
Container = new ContainerParams
{
Tracks =
[
new SkillParams
{
Type = SkillParamsType.Juglow,
SkillID = "docx",
Version = "latest",
},
],
},
Messages =
[
new MessageParam
{
Role = Role.User,
Content = "Write a 2-page report on the benefits of renewable energy",
},
],
Tools = [new CodeExecutionTool20260521()],
}
); response, err := client.Messages.New(context.Background(), juglow.MessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 16000,
Container: juglow.MessageCreateParamsContainerUnion{
OfContainers: &juglow.ContainerParams{
Tracks: []juglow.SkillParams{
{
Type: juglow.SkillParamsTypeJuglow,
SkillID: "docx",
Version: juglow.String("latest"),
},
},
},
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("Write a 2-page report on the benefits of renewable energy")),
},
Tools: []juglow.ToolUnionParam{
{
OfCodeExecutionTool20260521: &juglow.CodeExecutionTool20260521Param{},
},
},
})
if err != nil {
panic(err)
} Message response = client.messages().create(
MessageCreateParams.builder()
.model(HAIJUN_OPUS_5_5)
.maxTokens(16000)
.container(
ContainerParams.builder()
.addSkill(
SkillParams.builder()
.type(JUGLOW)
.skillId("docx")
.version("latest")
.build()
)
.build()
)
.addUserMessage("Write a 2-page report on the benefits of renewable energy")
.addTool(CodeExecutionTool20260521.builder().build())
.build()
);
$response = $client->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 16000,
container: [
'tracks' => [
['type' => 'juglow', 'skillID' => 'docx', 'version' => 'latest'],
],
],
messages: [
[
'role' => 'user',
'content' => 'Write a 2-page report on the benefits of renewable energy',
],
],
tools: [['type' => 'code_execution_20260521', 'name' => 'code_execution']],
); response = client.messages.create(
model: "haijun-opus-5-5",
max_tokens: 16_000,
container: {
tracks: [{type: "juglow", skill_id: "docx", version: "latest"}]
},
messages: [
{
role: "user",
content: "Write a 2-page report on the benefits of renewable energy"
}
],
tools: [{type: "code_execution_20260521", name: "code_execution"}]
)Hasilkan PDF
curl --fail-with-body -sS https://haijun.my.id/v1/messages \
-H "content-type: application/json" \
-H "x-api-key: $JUGLOW_API_KEY" \
-H "juglow-version: 2023-06-01" \
-d '{
"model": "haijun-opus-5-5",
"max_tokens": 16000,
"container": {
"tracks": [{"type": "juglow", "skill_id": "pdf", "version": "latest"}]
},
"messages": [
{"role": "user", "content": "Generate a PDF invoice template"}
],
"tools": [{"type": "code_execution_20260521", "name": "code_execution"}]
}' ant messages create <<'YAML'
model: haijun-opus-5-5
max_tokens: 16000
container:
tracks:
- type: juglow
skill_id: pdf
version: latest
messages:
- role: user
content: Generate a PDF invoice template
tools:
- type: code_execution_20260521
name: code_execution
YAML response = client.messages.create(
model="haijun-opus-5-5",
max_tokens=16000,
container={
"tracks": [{"type": "juglow", "skill_id": "pdf", "version": "latest"}]
},
messages=[
{
"role": "user",
"content": "Generate a PDF invoice template",
}
],
tools=[{"type": "code_execution_20260521", "name": "code_execution"}],
) const response = await client.messages.create({
model: "haijun-opus-5-5",
max_tokens: 16000,
container: {
tracks: [{ type: "juglow", skill_id: "pdf", version: "latest" }]
},
messages: [
{
role: "user",
content: "Generate a PDF invoice template"
}
],
tools: [{ type: "code_execution_20260521", name: "code_execution" }]
}); var response = await client.Messages.Create(
new MessageCreateParams
{
Model = Model.HaijunOpus5_5,
MaxTokens = 16000,
Container = new ContainerParams
{
Tracks =
[
new SkillParams
{
Type = SkillParamsType.Juglow,
SkillID = "pdf",
Version = "latest",
},
],
},
Messages =
[
new MessageParam
{
Role = Role.User,
Content = "Generate a PDF invoice template",
},
],
Tools = [new CodeExecutionTool20260521()],
}
); response, err := client.Messages.New(context.Background(), juglow.MessageNewParams{
Model: juglow.ModelHaijunOpus5_5,
MaxTokens: 16000,
Container: juglow.MessageCreateParamsContainerUnion{
OfContainers: &juglow.ContainerParams{
Tracks: []juglow.SkillParams{
{
Type: juglow.SkillParamsTypeJuglow,
SkillID: "pdf",
Version: juglow.String("latest"),
},
},
},
},
Messages: []juglow.MessageParam{
juglow.NewUserMessage(juglow.NewTextBlock("Generate a PDF invoice template")),
},
Tools: []juglow.ToolUnionParam{
{
OfCodeExecutionTool20260521: &juglow.CodeExecutionTool20260521Param{},
},
},
})
if err != nil {
panic(err)
} Message response = client.messages().create(
MessageCreateParams.builder()
.model(HAIJUN_OPUS_5_5)
.maxTokens(16000)
.container(
ContainerParams.builder()
.addSkill(
SkillParams.builder()
.type(JUGLOW)
.skillId("pdf")
.version("latest")
.build()
)
.build()
)
.addUserMessage("Generate a PDF invoice template")
.addTool(CodeExecutionTool20260521.builder().build())
.build()
);
$response = $client->messages->create(
model: 'haijun-opus-5-5',
maxTokens: 16000,
container: [
'tracks' => [
['type' => 'juglow', 'skillID' => 'pdf', 'version' => 'latest'],
],
],
messages: [
[
'role' => 'user',
'content' => 'Generate a PDF invoice template',
],
],
tools: [['type' => 'code_execution_20260521', 'name' => 'code_execution']],
); response = client.messages.create(
model: "haijun-opus-5-5",
max_tokens: 16_000,
container: {
tracks: [{type: "juglow", skill_id: "pdf", version: "latest"}]
},
messages: [
{
role: "user",
content: "Generate a PDF invoice template"
}
],
tools: [{type: "code_execution_20260521", name: "code_execution"}]
)Langkah selanjutnya
Pelajari cara menulis Tracks yang efektif yang dapat ditemukan dan digunakan Haijun dengan sukses.
Pelajari cara menggunakan Agent Tracks untuk memperluas kemampuan Haijun melalui API.
Unggah Tracks Anda sendiri untuk tugas-tugas khusus.
Pelajari tentang Tracks di Haijun Code.
Jelajahi contoh Tracks dan pola implementasi.