

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Membutuhkan output terstruktur
<a name="prompting-structured-output"></a>

Untuk memastikan format output yang konsisten dan terstruktur, Anda dapat menggunakan *output terstruktur*, termasuk format seperti XHTML, JSON, atau Markdown. Pendekatan ini memungkinkan kasus penggunaan hilir untuk lebih efektif mengkonsumsi dan memproses output yang dihasilkan oleh model. Dengan memberikan instruksi eksplisit untuk model, tanggapan dihasilkan dengan cara yang mematuhi skema yang telah ditentukan. Kami menyarankan Anda menyediakan `output schema` model untuk diikuti.

Misalnya, jika parser hilir mengharapkan konvensi penamaan khusus untuk kunci dalam objek JSON, Anda harus menentukan ini di bidang **Skema Keluaran** kueri. Selain itu, jika Anda lebih suka respons dalam format JSON tanpa teks pembukaan, instruksikan model yang sesuai. Artinya, secara eksplisit menyatakan "**Tolong hasilkan hanya output JSON. JANGAN berikan pembukaan apa pun.** “.

**Menggunakan prefilling untuk membantu model memulai**

Alternatif yang efisien adalah *mendorong* respons model dengan mengisi konten terlebih dahulu. `assistant` Teknik ini memungkinkan Anda untuk mengarahkan tindakan model, melewati pembukaan, dan menerapkan format keluaran tertentu seperti JSON dan XHTML. Misalnya, jika Anda mengisi konten asisten dengan `"{"` atau`"```json"`, input tersebut dapat memandu model untuk menghasilkan objek JSON tanpa memberikan informasi tambahan.

**Tip**  
Jika Anda secara eksplisit mencari ekstraksi JSON, satu pola umum yang diamati adalah mengisinya terlebih dahulu ````json` dan menambahkan urutan berhenti. ````` Ini memastikan bahwa model mengeluarkan objek JSON yang dapat diurai secara terprogram.

Berikut ini adalah contoh dari beberapa skema pemformatan umum.

------
#### [ JSON ]

```
JSON_schema = """Make sure your final response is a valid JSON schema follow the below Response Schema:

##Response Schema:
```json
{ 
"key1": "value1",
"key2": "value2",
key3: [{
"key3_1": "value_3_1,
"key3_2": "value_3_2,
...}```
"""
```

------
#### [ XML ]

```
XML_format = """Make sure your final response is a valid XML schema follow the below Response Schema:
##Response Schema:
<thinking>
( your thoughts go hee )
</thinking>
<output>
    <task>"task1"</task>
    <subtask>
    <task1_result> ( task 1 result )</task1_result>
    <task2_result> ( task 2 result )</task2_result>
    <task3_result> ( task 3 result )</task3_result>
    </subtask>
    <task>"task2"</task>
    <subtask>
    <task1_result> ( task 1 result )</task1_result>
    <task2_result> ( task 2 result )</task2_result>
    <task3_result> ( task 3 result )</task3_result>
    </subtask>
</output>

"""
```

------
#### [ Markdown ]

```
markdown_schema = """Make sure your final response is a valid Markdown schema follow the below Response Schema:

##Response Schema:
## Introduction
( 2-3 line intro)

## Design Guidance 
(Bulleted list of design guidance)

## Step by Step Instructions on Execution
( Bulleted list of instructions with each with bold title.

## Conclusion
( conclusion )


"""
```

------

Kode berikut menunjukkan cara mengisi ulang dengan API:

```
import boto3
import json

# Create a Bedrock Runtime client.
client = boto3.client(
    "bedrock-runtime",
    region_name="us-east-1"
)

request_body = {
    "system": [
        {"text": "You write JSON objects based on the given instructions"}
    ],
    "messages": [
        {
            "role": "user",
            "content": [{"text": "Provide details about the best selling full-frame cameras in past three years.
Answer in JSON format with keys like name, brand, price and a summary."}]
        },
        {
            "role": "assistant",
            "content": [{"text": " Here is the JSON response: ```json"}]
        },
    ],
    "inferenceConfig": {
        "maxTokens": 300,
        "temperature": 0,
    }
}

# Invoke the model and extract the response body.
response = client.invoke_model(
    modelId="amazon.nova-micro-v1:0",
    body=json.dumps(request_body)
)
model_response = json.loads(response["body"].read())
```

**catatan**  
Untuk keluaran terstruktur, terlepas dari apakah Anda memanfaatkan penggunaan alat, sebaiknya gunakan parameter decoding serakah. Yaitu,`temperature=0`.

## Contoh 1: Tambahkan skema keluaran
<a name="structure-collapsible1"></a>

Menambahkan bagian Output Schema dengan skema yang sesuai membuat model lebih memilih untuk menyesuaikan skema itu. Namun, output model tidak deterministik dan mungkin berbeda dari skema output.


| Peran |  | Prompt | 
| --- |--- |--- |
| Pengguna | Berikan detail tentang kamera full-frame terlaris dalam tiga tahun terakhir. Jawab dalam format JSON dengan kunci seperti nama, merek, harga, dan ringkasan. | Berikan detail tentang kamera full-frame terlaris dalam tiga tahun terakhir. Anda HARUS menjawab dalam format JSON saja. Silakan ikuti skema output di bawah ini.<br />**Skema Keluaran:**<pre>[{<br />    "name": "name goes here",<br />    "brand": "brand goes here",<br />    "price": "price goes here",<br />    "summary": "summary goes here"<br />}]</pre> | 
| Asisten |  <pre>[<br /> {<br /> "name": "Sony Alpha A7R IV",<br /> "brand": "Sony",<br /> "price": "Approximately $3,500",<br /> "summary": "The Sony Alpha A7R IV is renowned for its<br /> exceptional image quality, thanks to a 61-megapixel<br /> full-frame sensor. It also features 4K video recording<br /> and a robust build, making it a favorite among professional<br /> photographers and videographers."<br /> },<br /> {<br /> "name": "Canon EOS R5",<br /> "brand": "Canon",<br /> "price": "Approximately $3,900",<br /> "summary": "The Canon EOS R5 combines high-resolution<br /> imaging with advanced video capabilities. It houses a<br /> 45-megapixel sensor, 8K video recording, and impressive<br /> autofocus performance, appealing to both photography<br /> and filmmaking professionals."<br /> },<br /> {<br /> "name": "Nikon Z7 II",<br /> "brand": "Nikon",<br /> "price": "Approximately $2,800",<br /> "summary": "The Nikon Z7 II offers a 45.7-megapixel<br /> full-frame sensor and is praised for its high resolution<br /> and excellent dynamic range. It also supports 4K video<br /> recording and features a versatile Z-mount lens system,<br /> making it a strong contender in the full-frame market."<br /> },<br /> {<br /> "name": "Fujifilm GFX 100S",<br /> "brand": "Fujifilm",<br /> "price": "Approximately $7,000",<br /> "summary": "While not a traditional full-frame camera,<br /> the Fujifilm GFX 100S stands out with its 102-megapixel<br /> medium format sensor. It is lauded for its stunning detail<br /> and color reproduction, though it comes at a higher price<br /> point and is aimed at specialized users."<br /> }<br /> ]</pre>  |  <pre>[<br /> {<br /> "name": "Nikon D850",<br /> "brand": "Nikon",<br /> "price": "$3,296.95",<br /> "summary": "The Nikon D850 is a professional full-frame<br /> DSLR camera known for its exceptional image quality,<br /> 45.7-megapixel resolution, 7 fps continuous shooting,<br /> and 4K video capabilities."<br /> },<br /> {<br /> "name": "Canon EOS 5D Mark IV",<br /> "brand": "Canon",<br /> "price": "$3,499.00",<br /> "summary": "The Canon EOS 5D Mark IV is a popular<br /> full-frame DSLR appreciated for its 30.4-megapixel sensor,<br /> 4K video recording, robust build quality, and reliable<br /> autofocus system."<br /> },<br /> {<br /> "name": "Sony A7R III",<br /> "brand": "Sony",<br /> "price": "$3,198.00",<br /> "summary": "The Sony A7R III is a high-resolution<br /> full-frame mirrorless camera renowned for its 42.4-megapixel<br /> sensor, excellent low-light performance, and versatile<br /> lens compatibility."<br /> },<br /> {<br /> "name": "Fujifilm GFX 100S",<br /> "brand": "Fujifilm",<br /> "price": "$5,999.99",<br /> "summary": "The Fujifilm GFX 100S is a medium format<br /> mirrorless camera that stands out for its 102-megapixel<br /> sensor, high dynamic range, and exceptional color reproduction."<br /> },<br /> {<br /> "name": "Sony A7 III",<br /> "brand": "Sony",<br /> "price": "$1,998.00",<br /> "summary": "The Sony A7 III is a full-frame mirrorless<br /> camera popular among enthusiasts and professionals for<br /> its 24.2-megapixel sensor, fast autofocus, and 4K video<br /> capabilities."<br /> }<br /> ]</pre>  | 

## Contoh 2: Isi ulang respons model
<a name="structure-collapsible2"></a>

Pendekatan lain adalah dengan mengisi respons model dengan memasukkan teks awal yang diinginkan dalam pesan asisten. Dalam hal ini, respons model Amazon Nova akan berlanjut dari tempat pesan asisten ditinggalkan.


| Peran | Prompt | 
| --- |--- |
| Pengguna | Berikan detail tentang kamera full-frame terlaris dalam tiga tahun terakhir. Tanggapan Anda harus dalam format JSON, dengan kunci berikut: nama, merek, tahun, harga, ringkasan. | 
| Asisten *(Prefilling*) | ```json | 
| Asisten |  <pre>{<br /> "cameras": [<br /> {<br /> "name": "Sony Alpha A7 III",<br /> "brand": "Sony",<br /> "year": 2018,<br /> "price": "$1999",<br /> "summary": "The Sony Alpha A7 III is a highly acclaimed<br /> full-frame mirrorless camera known for its excellent<br /> image quality, advanced autofocus system, and 4K video<br /> capabilities."<br /> },<br /> {<br /> "name": "Canon EOS R5",<br /> "brand": "Canon",<br /> "year": 2020,<br /> "price": "$3899",<br /> "summary": "The Canon EOS R5 is a top-tier full-frame<br /> mirrorless camera that offers stunning 45MP images, 8K<br /> video recording, and exceptional performance in various<br /> lighting conditions."<br /> },<br /> {<br /> "name": "Nikon Z7 II",<br /> "brand": "Nikon",<br /> "year": 2020,<br /> "price": "$2999",<br /> "summary": "The Nikon Z7 II is a flagship full-frame<br /> mirrorless camera with a 45.7MP sensor, superb image<br /> quality, and advanced video recording features."<br /> },<br /> {<br /> "name": "Fujifilm GFX 100S",<br /> "brand": "Fujifilm",<br /> "year": 2020,<br /> "price": "$7999",<br /> "summary": "The Fujifilm GFX 100S is a medium format<br /> mirrorless camera known for its impressive 102MP sensor,<br /> beautiful film simulations, and versatile lens options."<br /> },<br /> {<br /> "name": "Sony Alpha A7R IV",<br /> "brand": "Sony",<br /> "year": 2019,<br /> "price": "$3499",<br /> "summary": "The Sony Alpha A7R IV features a 61MP<br /> sensor, excellent low-light performance, and advanced<br /> video capabilities, making it a favorite among<br /> professional photographers."<br /> }<br /> ]<br /> }<br /> ```</pre>  | 

## Contoh 3: Tentukan alat yang akan digunakan
<a name="structure-collapsible3"></a>

Pendekatan ketiga adalah menggunakan penggunaan alat untuk memaksa skema tertentu untuk respons model dengan memasukkan skema *JSON pydantic di bagian skema* penggunaan alat. Anda dapat menentukan *pilihan alat* ke skema yang disediakan dan respons Amazon Nova akan disusun berdasarkan alat yang dipilih. Untuk mempelajari lebih lanjut tentang cara memanfaatkan penggunaan alat lihat[Penggunaan alat (panggilan fungsi) dengan Amazon Nova](tool-use.md).


|  |  | 
| --- |--- |
| Pengguna | Dari Kueri yang disediakan di bawah ini, ekstrak entitas yang relevan<pre>Query: John works in BUILDING-0987<br />and has been in charge of product id 23564#.<br />His performance has been excellent in past<br />year and he is up for a raise.<br /><br />Use the print_entities tool.</pre> | 
| ToolConfig |  <pre>tool_config = {<br />    "tools": [<br />        {<br />            "toolSpec": {<br />                    "name": "print_entities",<br />                    "description": "Extract the named entity based on provided input",<br />                    "inputSchema": {<br />                        "type": "object",<br />                        "properties": {<br />                            "name": {<br />                               "type": "string",<br />                               "description": "The extracted entity name. This should be a name of a person, place, animal or thing"<br />                            },<br />                            "location": {<br />                               "type": "string",<br />                                "description": "The extracted location name. This is a site name or a building name like SITE-001 or BUILDING-003"<br />                            },<br />                            "product": {<br />                              "type": "string",<br />                              "description": "The extracted product code, this is generally a 6 digit alphanumeric code such as 45623#, 234567"<br />                            }<br />                        },<br />                        "required": ["name", "location", "product"]<br />                 }<br />            }<br />        }<br />    ],<br />    "toolChoice": {<br />        "tool": {<br />            "name": "print_entities"<br />        }<br />    }<br />}</pre>  | 