ਮੁੱਖ ਸਮੱਗਰੀ 'ਤੇ ਜਾਓ
OpenAI

6 ਅਗਸਤ 2024

ਕੰਪਨੀ

API ਵਿੱਚ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਦੀ ਪੇਸ਼ਕਸ਼

ਅਸੀਂ API ਵਿੱਚ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਪੇਸ਼ ਕਰ ਰਹੇ ਹਾਂ—ਹੁਣ ਮਾਡਲ ਆਉਟਪੁੱਟਸ ਡਿਵੈਲਪਰਾਂ ਵੱਲੋਂ ਦਿੱਤੇ JSON ਸਕੀਮਾਜ਼ ਦੀ ਭਰੋਸੇਯੋਗ ਤਰੀਕੇ ਨਾਲ ਪਾਲਣਾ ਕਰਦੇ ਹਨ.

ਚਿੱਤਰ ਵਿੱਚ ਨੀਲੇ, ਹਰੇ ਅਤੇ ਹਲਕੇ ਪੀਲੇ ਰੰਗ ਦੀਆਂ ਵੱਖ-ਵੱਖ ਛਾਵਾਂ ਵਿੱਚ ਛੋਟੇ ਵਰਗਾਂ ਦਾ ਇੱਕ ਅਮੂਰਤ ਪੈਟਰਨ ਦਿਖਾਇਆ ਗਿਆ ਹੈ। ਵਰਗਾਂ ਨੂੰ ਗ੍ਰਿਡ ਵਰਗੀ ਬਣਤਰ ਵਿੱਚ ਸਜਾਇਆ ਗਿਆ ਹੈ, ਜਿਸ ਨਾਲ ਨਰਮ, ਪੈਸਟਲ ਰੰਗ ਪੈਲੇਟ ਨਾਲ ਇੱਕ ਮੋਜ਼ੈਕ ਪ੍ਰਭਾਵ ਬਣਦਾ ਹੈ.

ਪਿਛਲੇ ਸਾਲ DevDay ਵਿੱਚ, ਅਸੀਂ JSON mode ਪੇਸ਼ ਕੀਤਾ ਸੀ—ਇਹ ਉਹਨਾਂ ਡਿਵੈਲਪਰਾਂ ਲਈ ਇੱਕ ਲਾਭਕਾਰੀ ਬਿਲਡਿੰਗ ਬਲਾਕ ਹੈ ਜੋ ਸਾਡੇ ਮਾਡਲਾਂ ਨਾਲ ਭਰੋਸੇਯੋਗ ਐਪਲੀਕੇਸ਼ਨ ਬਣਾਉਣਾ ਚਾਹੁੰਦੇ ਹਨ। ਹਾਲਾਂਕਿ JSON mode ਵੈਧ JSON ਆਉਟਪੁੱਟਸ ਬਣਾਉਣ ਲਈ ਮਾਡਲ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਨੂੰ ਸੁਧਾਰਦਾ ਹੈ, ਇਹ ਇਸ ਗੱਲ ਦੀ ਗਾਰੰਟੀ ਨਹੀਂ ਦਿੰਦਾ ਕਿ ਮਾਡਲ ਦਾ ਜਵਾਬ ਕਿਸੇ ਖਾਸ ਸਕੀਮਾ ਦੇ ਅਨੁਕੂਲ ਹੋਵੇਗਾ। ਅੱਜ ਅਸੀਂ API ਵਿੱਚ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਪੇਸ਼ ਕਰ ਰਹੇ ਹਾਂ, ਇੱਕ ਨਵਾਂ ਫੀਚਰ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਡਿਜ਼ਾਈਨ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿ ਮਾਡਲ ਦੁਆਰਾ ਬਣਾਏ ਆਉਟਪੁੱਟਸ ਡਿਵੈਲਪਰਾਂ ਵੱਲੋਂ ਦਿੱਤੇ JSON ਸਕੀਮਾਜ਼ ਨਾਲ ਬਿਲਕੁਲ ਮੇਲ ਖਾਣ.

ਬੇਤਰਤੀਬ ਇਨਪੁੱਟਸ ਤੋਂ ਸਟਰੱਕਚਰਡ ਡਾਟਾ ਬਣਾਉਣਾ ਅੱਜ ਦੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ AI ਦੇ ਮੁੱਖ ਵਰਤੋਂ ਮਾਮਲਿਆਂ ਵਿੱਚੋਂ ਇੱਕ ਹੈ। ਡਿਵੈਲਪਰ OpenAI API ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਐਸੇ ਸ਼ਕਤੀਸ਼ਾਲੀ ਅਸਿਸਟੈਂਟ ਬਣਾਉਂਦੇ ਹਨ ਜਿਨ੍ਹਾਂ ਕੋਲ function calling(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਰਾਹੀਂ ਡਾਟਾ ਲਿਆਉਣ ਅਤੇ ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਦੇਣ ਦੀ ਸਮਰੱਥਾ ਹੁੰਦੀ ਹੈ, ਡਾਟਾ ਐਂਟਰੀ ਲਈ ਸਟਰੱਕਚਰਡ ਡਾਟਾ ਕੱਢਣ ਦੀ ਯੋਗਤਾ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਬਹੁ-ਕਦਮੀ agentic workflows ਬਣਾਉਣ ਦੀ ਸਮਰੱਥਾ ਹੁੰਦੀ ਹੈ ਜੋ LLM ਨੂੰ ਕਾਰਵਾਈ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ। ਡਿਵੈਲਪਰ ਕਾਫੀ ਸਮੇਂ ਤੋਂ ਇਸ ਖੇਤਰ ਵਿੱਚ LLM ਦੀਆਂ ਸੀਮਾਵਾਂ ਨੂੰ ਓਪਨ ਸੋਰਸ ਟੂਲਿੰਗ, ਪ੍ਰੌੰਪਟਿੰਗ, ਅਤੇ ਵਾਰੰਵਾਰ ਬੇਨਤੀਆਂ ਦੁਹਰਾਕੇ ਪਾਰ ਕਰਦੇ ਆ ਰਹੇ ਹਨ ਤਾਂ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਇਆ ਜਾ ਸਕੇ ਕਿ ਮਾਡਲ ਆਉਟਪੁੱਟਸ ਉਹਨਾਂ ਫਾਰਮੈਟਾਂ ਨਾਲ ਮੇਲ ਖਾਣ ਜੋ ਉਹਨਾਂ ਦੀਆਂ ਸਿਸਟਮਾਂ ਨਾਲ ਇੰਟਰਓਪਰੇਟ ਕਰਨ ਲਈ ਲੋੜੀਂਦੇ ਹਨ। ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ OpenAI ਮਾਡਲਾਂ ਨੂੰ ਡਿਵੈਲਪਰਾਂ ਵੱਲੋਂ ਦਿੱਤੇ ਸਕੀਮਾਜ਼ ਨਾਲ ਮੇਲ ਖਾਣ ਲਈ ਸੀਮਿਤ ਕਰਕੇ ਅਤੇ ਸਾਡੇ ਮਾਡਲਾਂ ਨੂੰ ਜਟਿਲ ਸਕੀਮਾਜ਼ ਨੂੰ ਹੋਰ ਚੰਗੀ ਤਰ੍ਹਾਂ ਸਮਝਣ ਲਈ ਟ੍ਰੇਨ ਕਰਕੇ ਇਸ ਸਮੱਸਿਆ ਦਾ ਹੱਲ ਕਰਦੇ ਹਨ.

ਜਟਿਲ JSON ਸਕੀਮਾ ਦੀ ਪਾਲਣਾ ਸਬੰਧੀ ਸਾਡੀਆਂ evals ਵਿੱਚ, ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਨਾਲ ਸਾਡਾ ਨਵਾਂ ਮਾਡਲ gpt-4o-2024-08-06 ਬੇਮਿਸਾਲ 100% ਸਕੋਰ ਕਰਦਾ ਹੈ। ਤੁਲਨਾ ਵਿੱਚ, gpt-4-0613 40% ਤੋਂ ਘੱਟ ਸਕੋਰ ਕਰਦਾ ਹੈ.

ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਨਾਲ, gpt-4o-2024-08-06 ਸਾਡੀਆਂ evals ਵਿੱਚ 100% ਭਰੋਸੇਯੋਗਤਾ ਹਾਸਲ ਕਰਦਾ ਹੈ ਅਤੇ ਆਉਟਪੁੱਟ ਸਕੀਮਾਜ਼ ਨਾਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਮੇਲ ਖਾਂਦਾ ਹੈ.

ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਕਿਵੇਂ ਵਰਤਣੇ ਹਨ

ਅਸੀਂ API ਵਿੱਚ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਨੂੰ ਦੋ ਰੂਪਾਂ ਵਿੱਚ ਪੇਸ਼ ਕਰ ਰਹੇ ਹਾਂ:

1. ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ: tools ਰਾਹੀਂ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਤੁਹਾਡੀ function definition ਦੇ ਅੰਦਰ strict: true ਸੈੱਟ ਕਰਕੇ ਉਪਲਬਧ ਹਨ। ਇਹ ਫੀਚਰ ਉਹਨਾਂ ਸਭ ਮਾਡਲਾਂ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ ਜੋ tools ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ gpt-4-0613 ਅਤੇ gpt-3.5-turbo-0613 ਅਤੇ ਇਸ ਤੋਂ ਬਾਅਦ ਦੇ ਸਭ ਮਾਡਲ ਸ਼ਾਮਲ ਹਨ। ਜਦੋਂ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਸਮਰਥਿਤ ਹੁੰਦੇ ਹਨ, ਮਾਡਲ ਆਉਟਪੁੱਟਸ ਦਿੱਤੀ ਗਈ ਟੂਲ ਪਰਿਭਾਸ਼ਾ ਨਾਲ ਮੇਲ ਖਾਣਗੇ.

JSON

1
POST /v1/chat/completions
2
{
3
"model": "gpt-4o-2024-08-06",
4
"messages": [
5
{
6
"role": "system",
7
"content": "You are a helpful assistant. The current date is August 6, 2024. You help users query for the data they are looking for by calling the query function."
8
},
9
{
10
"role": "user",
11
"content": "look up all my orders in may of last year that were fulfilled but not delivered on time"
12
}
13
],
14
"tools": [
15
{
16
"type": "function",
17
"function": {
18
"name": "query",
19
"description": "Execute a query.",
20
"strict": true,
21
"parameters": {
22
"type": "object",
23
"properties": {
24
"table_name": {
25
"type": "string",
26
"enum": ["orders"]
27
},
28
"columns": {
29
"type": "array",
30
"items": {
31
"type": "string",
32
"enum": [
33
"id",
34
"status",
35
"expected_delivery_date",
36
"delivered_at",
37
"shipped_at",
38
"ordered_at",
39
"canceled_at"
40
]
41
}
42
},
43
"conditions": {
44
"type": "array",
45
"items": {
46
"type": "object",
47
"properties": {
48
"column": {
49
"type": "string"
50
},
51
"operator": {
52
"type": "string",
53
"enum": ["=", ">", "<", ">=", "<=", "!="]
54
},
55
"value": {
56
"anyOf": [
57
{
58
"type": "string"
59
},
60
{
61
"type": "number"
62
},
63
{
64
"type": "object",
65
"properties": {
66
"column_name": {
67
"type": "string"
68
}
69
},
70
"required": ["column_name"],
71
"additionalProperties": false
72
}
73
]
74
}
75
},
76
"required": ["column", "operator", "value"],
77
"additionalProperties": false
78
}
79
},
80
"order_by": {
81
"type": "string",
82
"enum": ["asc", "desc"]
83
}
84
},
85
"required": ["table_name", "columns", "conditions", "order_by"],
86
"additionalProperties": false
87
}
88
}
89
}
90
]
91
}

2. response_format ਪੈਰਾਮੀਟਰ ਲਈ ਇੱਕ ਨਵਾਂ ਵਿਕਲਪ: ਡਿਵੈਲਪਰ ਹੁਣ json_schema ਰਾਹੀਂ ਇੱਕ JSON ਸਕੀਮਾ ਦੇ ਸਕਦੇ ਹਨ, ਜੋ response_format ਪੈਰਾਮੀਟਰ ਲਈ ਇੱਕ ਨਵਾਂ ਵਿਕਲਪ ਹੈ। ਇਹ ਉਸ ਵੇਲੇ ਲਾਭਕਾਰੀ ਹੈ ਜਦੋਂ ਮਾਡਲ ਕੋਈ ਟੂਲ ਕਾਲ ਨਹੀਂ ਕਰ ਰਿਹਾ ਹੁੰਦਾ, ਬਲਕਿ ਯੂਜ਼ਰ ਨੂੰ ਇੱਕ ਸਟਰੱਕਚਰਡ ਢੰਗ ਨਾਲ ਜਵਾਬ ਦੇ ਰਿਹਾ ਹੁੰਦਾ ਹੈ। ਇਹ ਫੀਚਰ ਸਾਡੇ ਸਭ ਤੋਂ ਨਵੇਂ GPT‑4o ਮਾਡਲਾਂ ਨਾਲ ਕੰਮ ਕਰਦਾ ਹੈ: gpt-4o-2024-08-06, ਜੋ ਅੱਜ ਜਾਰੀ ਕੀਤਾ ਗਿਆ ਹੈ, ਅਤੇ gpt-4o-mini-2024-07-18। ਜਦੋਂ response_format ਨੂੰ strict: true ਨਾਲ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ, ਤਾਂ ਮਾਡਲ ਆਉਟਪੁੱਟਸ ਦਿੱਤੇ ਗਏ ਸਕੀਮਾ ਨਾਲ ਮੇਲ ਖਾਣਗੇ.

ਬੇਨਤੀ

1
POST /v1/chat/completions
2
{
3
"model": "gpt-4o-2024-08-06",
4
"messages": [
5
{
6
"role": "system",
7
"content": "You are a helpful math tutor."
8
},
9
{
10
"role": "user",
11
"content": "solve 8x + 31 = 2"
12
}
13
],
14
"response_format": {
15
"type": "json_schema",
16
"json_schema": {
17
"name": "math_response",
18
"strict": true,
19
"schema": {
20
"type": "object",
21
"properties": {
22
"steps": {
23
"type": "array",
24
"items": {
25
"type": "object",
26
"properties": {
27
"explanation": {
28
"type": "string"
29
},
30
"output": {
31
"type": "string"
32
}
33
},
34
"required": ["explanation", "output"],
35
"additionalProperties": false
36
}
37
},
38
"final_answer": {
39
"type": "string"
40
}
41
},
42
"required": ["steps", "final_answer"],
43
"additionalProperties": false
44
}
45
}
46
}
47
}

ਸੁਰੱਖਿਅਤ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ

ਸੁਰੱਖਿਆ OpenAI ਲਈ ਸਭ ਤੋਂ ਉੱਚੀ ਤਰਜੀਹ ਹੈ—ਨਵੀਂ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਕਾਰਗੁਜ਼ਾਰੀ ਸਾਡੀਆਂ ਮੌਜੂਦਾ ਸੁਰੱਖਿਆ ਨੀਤੀਆਂ ਦੀ ਪਾਲਣਾ ਕਰੇਗੀ ਅਤੇ ਮਾਡਲ ਨੂੰ ਅਸੁਰੱਖਿਅਤ ਬੇਨਤੀ ਅਸਵੀਕਾਰ ਕਰਨ ਦੀ ਆਗਿਆ ਵੀ ਦੇਵੇਗੀ। ਡਿਵੈਲਪਮੈਂਟ ਨੂੰ ਹੋਰ ਆਸਾਨ ਬਣਾਉਣ ਲਈ, API ਜਵਾਬਾਂ ਵਿੱਚ ਇੱਕ ਨਵੀਂ refusal ਸਟਰਿੰਗ value ਹੈ ਜੋ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਪ੍ਰੋਗਰਾਮਮੈਟਿਕ ਤਰੀਕੇ ਨਾਲ ਪਤਾ ਲਗਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ ਕਿ ਮਾਡਲ ਨੇ ਸਕੀਮਾ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਆਉਟਪੁੱਟ ਬਣਾਉਣ ਦੀ ਬਜਾਏ ਅਸਵੀਕਾਰਤਾ ਜਨਰੇਟ ਕੀਤੀ ਹੈ ਜਾਂ ਨਹੀਂ। ਜਦੋਂ ਜਵਾਬ ਵਿੱਚ refusal ਸ਼ਾਮਲ ਨਾ ਹੋਵੇ ਅਤੇ ਮਾਡਲ ਦਾ ਜਵਾਬ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਰੁਕਿਆ ਨਾ ਹੋਵੇ (ਜਿਵੇਂ finish_reason ਦੁਆਰਾ ਦਰਸਾਇਆ ਗਿਆ ਹੈ), ਤਾਂ ਮਾਡਲ ਦਾ ਜਵਾਬ ਦਿੱਤੇ ਗਏ ਸਕੀਮਾ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਵੈਧ JSON ਭਰੋਸੇਯੋਗ ਤਰੀਕੇ ਨਾਲ ਤਿਆਰ ਕਰੇਗਾ।

JSON

1
{
2
"id": "chatcmpl-9nYAG9LPNonX8DAyrkwYfemr3C8HC",
3
"object": "chat.completion",
4
"created": 1721596428,
5
"model": "gpt-4o-2024-08-06",
6
"choices": [
7
{
8
"index": 0,
9
"message": {
10
"role": "assistant",
11
"refusal": "I'm sorry, I cannot assist with that request."
12
},
13
"logprobs": null,
14
"finish_reason": "stop"
15
}
16
],
17
"usage": {
18
"prompt_tokens": 81,
19
"completion_tokens": 11,
20
"total_tokens": 92
21
},
22
"system_fingerprint": "fp_3407719c7f"
23
}

ਨੇਟਿਵ SDK ਸਮਰਥਨ

ਸਾਡੇ Python ਅਤੇ Node SDKs ਨੂੰ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਲਈ ਨੇਟਿਵ ਸਮਰਥਨ ਨਾਲ ਅਪਡੇਟ ਕੀਤਾ ਗਿਆ ਹੈ। ਟੂਲਾਂ ਲਈ ਜਾਂ response format ਵਜੋਂ ਸਕੀਮਾ ਦੇਣਾ, Pydantic ਜਾਂ Zod ਆਬਜੈਕਟ ਦੇਣ ਜਿੰਨਾ ਆਸਾਨ ਹੈ, ਅਤੇ ਸਾਡੇ SDKs ਡਾਟਾ ਟਾਈਪ ਨੂੰ ਸਮਰਥਿਤ JSON ਸਕੀਮਾ ਵਿੱਚ ਬਦਲਣ, JSON ਜਵਾਬ ਨੂੰ typed data structure ਵਿੱਚ ਆਪੇ deserialize ਕਰਨ, ਅਤੇ ਜੇ ਅਸਵੀਕਾਰਤਾਵਾਂ ਆਉਣ ਤਾਂ ਉਹਨਾਂ ਨੂੰ parse ਕਰਨ ਦਾ ਕੰਮ ਸੰਭਾਲ ਲੈਣਗੇ.

ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਉਦਾਹਰਨਾਂ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਨਾਲ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਲਈ ਨੇਟਿਵ ਸਮਰਥਨ ਦਿਖਾਉਂਦੀਆਂ ਹਨ.

Python

1
from enum import Enum
2
from typing import Union
3

4
from pydantic import BaseModel
5

6
import openai
7
from openai import OpenAI
8

9

10
class Table(str, Enum):
11
orders = "orders"
12
customers = "customers"
13
products = "products"
14

15

16
class Column(str, Enum):
17
id = "id"
18
status = "status"
19
expected_delivery_date = "expected_delivery_date"
20
delivered_at = "delivered_at"
21
shipped_at = "shipped_at"
22
ordered_at = "ordered_at"
23
canceled_at = "canceled_at"
24

25

26
class Operator(str, Enum):
27
eq = "="
28
gt = ">"
29
lt = "<"
30
le = "<="
31
ge = ">="
32
ne = "!="
33

34

35
class OrderBy(str, Enum):
36
asc = "asc"
37
desc = "desc"
38

39

40
class DynamicValue(BaseModel):
41
column_name: str
42

43

44
class Condition(BaseModel):
45
column: str
46
operator: Operator
47
value: Union[str, int, DynamicValue]
48

49

50
class Query(BaseModel):
51
table_name: Table
52
columns: list[Column]
53
conditions: list[Condition]
54
order_by: OrderBy
55

56

57
client = OpenAI()
58

59
completion = client.beta.chat.completions.parse(
60
model="gpt-4o-2024-08-06",
61
messages=[
62
{
63
"role": "system",
64
"content": "You are a helpful assistant. The current date is August 6, 2024. You help users query for the data they are looking for by calling the query function.",
65
},
66
{
67
"role": "user",
68
"content": "look up all my orders in may of last year that were fulfilled but not delivered on time",
69
},
70
],
71
tools=[
72
openai.pydantic_function_tool(Query),
73
],
74
)
75

76
print(completion.choices[0].message.tool_calls[0].function.parsed_arguments)

response_format ਲਈ ਨੇਟਿਵ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਸਮਰਥਨ ਵੀ ਉਪਲਬਧ ਹੈ.

Python

1
from pydantic import BaseModel
2

3
from openai import OpenAI
4

5

6
class Step(BaseModel):
7
explanation: str
8
output: str
9

10

11
class MathResponse(BaseModel):
12
steps: list[Step]
13
final_answer: str
14

15

16
client = OpenAI()
17

18
completion = client.beta.chat.completions.parse(
19
model="gpt-4o-2024-08-06",
20
messages=[
21
{"role": "system", "content": "You are a helpful math tutor."},
22
{"role": "user", "content": "solve 8x + 31 = 2"},
23
],
24
response_format=MathResponse,
25
)
26

27
message = completion.choices[0].message
28
if message.parsed:
29
print(message.parsed.steps)
30
print(message.parsed.final_answer)
31
else:
32
print(message.refusal)

ਵਾਧੂ ਵਰਤੋਂ ਮਾਮਲੇ

ਡਿਵੈਲਪਰ ਅਕਸਰ ਵੱਖ-ਵੱਖ ਵਰਤੋਂ ਮਾਮਲਿਆਂ ਲਈ ਸਟਰੱਕਚਰਡ ਡਾਟਾ ਬਣਾਉਣ ਵਾਸਤੇ OpenAI ਦੇ ਮਾਡਲ ਵਰਤਦੇ ਹਨ। ਕੁਝ ਹੋਰ ਉਦਾਹਰਨਾਂ ਵਿੱਚ ਸ਼ਾਮਲ ਹਨ:

ਯੂਜ਼ਰ ਦੇ ਇਰਾਦੇ ਦੇ ਆਧਾਰ 'ਤੇ ਯੂਜ਼ਰ ਇੰਟਰਫੇਸਾਂ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਬਣਾਉਣਾ

ਉਦਾਹਰਣ ਲਈ, ਡਿਵੈਲਪਰ ਕੋਡ ਜਾਂ UI ਬਣਾਉਣ ਵਾਲੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਬਣਾਉਣ ਲਈ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਵਰਤ ਸਕਦੇ ਹਨ। ਹੇਠਾਂ ਦਿੱਤੀਆਂ ਸਾਰੀਆਂ ਉਦਾਹਰਨਾਂ ਇੱਕੋ response_format ਵਰਤਦੀਆਂ ਹਨ, ਅਤੇ ਯੂਜ਼ਰ ਇਨਪੁੱਟ ਦੇ ਆਧਾਰ 'ਤੇ ਵੱਖ-ਵੱਖ UI ਬਣਾਉਣ ਲਈ ਵਰਤੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ.

ਸਿਸਟਮ
ਤੁਸੀਂ ਇੱਕ ਯੂਜ਼ਰ ਇੰਟਰਫੇਸ ਸਹਾਇਕ ਹੋ। ਤੁਹਾਡਾ ਕੰਮ ਉਪਭੋਗਤਾਵਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੀ ਵੈੱਬਸਾਈਟ ਅਤੇ ਐਪ ਦੇ ਵਿਚਾਰਾਂ ਦੀ ਕਲਪਨਾ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਨਾ ਹੈ।
ਜਵਾਬ ਫਾਰਮੈਟ
ਸਹਾਇਕ
1
{
2
"type": "div",
3
"label": "",
4
"children": [
5
{
6
"type": "header",
7
"label": "",
8
"children": [
9
{
10
"type": "div",
11
"label": "Green Thumb Gardening",
12
"children": [],
13
"attributes": [{ "name": "className", "value": "site-title" }]
14
},
15
{
16
"type": "div",
17
"label": "Bringing Life to Your Garden",
18
"children": [],
19
"attributes": [{ "name": "className", "value": "site-tagline" }]
20
}
21
],
22
"attributes": [{ "name": "className", "value": "header" }]
23
},
24
{
25
"type": "section",
26
"label": "",
27
"children": [
28
{
29
"type": "div",
30
"label": "",
31
"children": [
32
{
33
"type": "div",
34
"label": "About Us",
35
"children": [
36
{
37
"type": "div",
38
"label": "At Green Thumb Gardening, we specialize in transforming your outdoor spaces into beautiful, thriving gardens. Our team has decades of experience in horticulture and landscape design.",
39
"children": [],
40
"attributes": [
41
{ "name": "className", "value": "about-description" }
42
]
43
}
44
],
45
"attributes": [{ "name": "className", "value": "about-section" }]
46
}
47
],
48
"attributes": [{ "name": "className", "value": "content" }]
49
}
50
],
51
"attributes": [{ "name": "className", "value": "about-container" }]
52
},
53
{
54
"type": "section",
55
"label": "",
56
"children": [
57
{
58
"type": "div",
59
"label": "",
60
"children": [
61
{
62
"type": "div",
63
"label": "Our Services",
64
"children": [
65
{
66
"type": "div",
67
"label": "Garden Design",
68
"children": [],
69
"attributes": [
70
{ "name": "className", "value": "service-item" }
71
]
72
},
73
{
74
"type": "div",
75
"label": "Plant Care & Maintenance",
76
"children": [],
77
"attributes": [
78
{ "name": "className", "value": "service-item" }
79
]
80
},
81
{
82
"type": "div",
83
"label": "Seasonal Cleanup",
84
"children": [],
85
"attributes": [
86
{ "name": "className", "value": "service-item" }
87
]
88
},
89
{
90
"type": "div",
91
"label": "Custom Landscaping",
92
"children": [],
93
"attributes": [
94
{ "name": "className", "value": "service-item" }
95
]
96
}
97
],
98
"attributes": [{ "name": "className", "value": "services-list" }]
99
}
100
],
101
"attributes": [{ "name": "className", "value": "content" }]
102
}
103
],
104
"attributes": [{ "name": "className", "value": "services-container" }]
105
}
106
],
107
"attributes": [{ "name": "className", "value": "landing-page" }]
108
}
109

Welcome to Green Thumb Gardening
Bringing Life to Your Garden
At Green Thumb Gardening, we specialize in transforming your outdoor spaces into beautiful, thriving gardens. Our team has decades of experience in horticulture and landscape design.
Our services
Garden Design
Plant Care & Maintenance
Seasonal Cleanup
Custom Landscaping

ਅੰਤਿਮ ਜਵਾਬ ਨੂੰ ਸਹਾਇਕ ਰੀਜ਼ਨਿੰਗ ਜਾਂ ਵਾਧੂ ਟਿੱਪਣੀ ਤੋਂ ਵੱਖ ਕਰਨਾ

ਜਵਾਬ ਦੀ ਅੰਤਿਮ ਗੁਣਵੱਤਾ ਸੁਧਾਰਨ ਲਈ ਮਾਡਲ ਨੂੰ chain of thought ਲਈ ਇੱਕ ਵੱਖਰਾ ਫੀਲਡ ਦੇਣਾ ਲਾਭਕਾਰੀ ਹੋ ਸਕਦਾ ਹੈ.

JSON

1
{
2
"model": "gpt-4o-2024-08-06",
3
"messages": [
4
{
5
"role": "system",
6
"content": "You are a helpful assistant"
7
},
8
{
9
"role": "user",
10
"content": "9.11 and 9.9 -- which is bigger?"
11
}
12
],
13
"response_format": {
14
"type": "json_schema",
15
"json_schema": {
16
"name": "reasoning_schema",
17
"strict": true,
18
"schema": {
19
"type": "object",
20
"properties": {
21
"reasoning_steps": {
22
"type": "array",
23
"items": {
24
"type": "string"
25
},
26
"description": "The reasoning steps leading to the final conclusion."
27
},
28
"answer": {
29
"type": "string",
30
"description": "The final answer, taking into account the reasoning steps."
31
}
32
},
33
"required": ["reasoning_steps", "answer"],
34
"additionalProperties": false
35
}
36
}
37
}
38
}

ਬੇਤਰਤੀਬ ਡਾਟਾ ਵਿਚੋਂ ਸਟਰੱਕਚਰਡ ਡਾਟਾ ਕੱਢਣਾ

ਉਦਾਹਰਣ ਲਈ, ਮੀਟਿੰਗ ਨੋਟਸ ਵਿੱਚੋਂ ਕੰਮ, ਅੰਤਿਮ ਮਿਤੀਆਂ ਅਤੇ ਅਸਾਈਨਮੈਂਟਸ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਕੱਢਣ ਲਈ ਮਾਡਲ ਨੂੰ ਨਿਰਦੇਸ਼ ਦੇਣਾ.

JSON

1
POST /v1/chat/completions
2
{
3
"model": "gpt-4o-2024-08-06",
4
"messages": [
5
{
6
"role": "system",
7
"content": "Extract action items, due dates, and owners from meeting notes."
8
},
9
{
10
"role": "user",
11
"content": "...meeting notes go here..."
12
}
13
],
14
"response_format": {
15
"type": "json_schema",
16
"json_schema": {
17
"name": "action_items",
18
"strict": true,
19
"schema": {
20
"type": "object",
21
"properties": {
22
"action_items": {
23
"type": "array",
24
"items": {
25
"type": "object",
26
"properties": {
27
"description": {
28
"type": "string",
29
"description": "Description of the action item."
30
},
31
"due_date": {
32
"type": ["string", "null"],
33
"description": "Due date for the action item, can be null if not specified."
34
},
35
"owner": {
36
"type": ["string", "null"],
37
"description": "Owner responsible for the action item, can be null if not specified."
38
}
39
},
40
"required": ["description", "due_date", "owner"],
41
"additionalProperties": false
42
},
43
"description": "List of action items from the meeting."
44
}
45
},
46
"required": ["action_items"],
47
"additionalProperties": false
48
}
49
}
50
}
51
}

ਅੰਦਰੂਨੀ ਤੌਰ 'ਤੇ

JSON ਸਕੀਮਾ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਮਾਡਲ ਆਉਟਪੁੱਟਸ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਸੁਧਾਰਨ ਲਈ ਅਸੀਂ ਦੋ-ਹਿੱਸਿਆਂ ਵਾਲੀ ਪਹੁੰਚ ਅਪਣਾਈ। ਪਹਿਲਾਂ, ਅਸੀਂ ਆਪਣੇ ਸਭ ਤੋਂ ਨਵੇਂ ਮਾਡਲ gpt-4o-2024-08-06 ਨੂੰ ਜਟਿਲ ਸਕੀਮਾਜ਼ ਨੂੰ ਸਮਝਣ ਅਤੇ ਉਹਨਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਆਉਟਪੁੱਟਸ ਸਭ ਤੋਂ ਵਧੀਆ ਢੰਗ ਨਾਲ ਤਿਆਰ ਕਰਨ ਲਈ ਟ੍ਰੇਨ ਕੀਤਾ। ਹਾਲਾਂਕਿ, ਮਾਡਲ ਦਾ ਵਿਹਾਰ ਮੂਲ ਰੂਪ ਵਿੱਚ non-deterministic ਹੁੰਦਾ ਹੈ—ਇਸ ਮਾਡਲ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰਾਂ ਦੇ ਬਾਵਜੂਦ (ਸਾਡੇ benchmark 'ਤੇ 93%), ਇਹ ਫਿਰ ਵੀ ਉਹ ਭਰੋਸੇਯੋਗਤਾ ਪੱਧਰ ਪੂਰਾ ਨਹੀਂ ਕਰ ਸਕਿਆ ਜਿਸਦੀ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਮਜ਼ਬੂਤ ਐਪਲੀਕੇਸ਼ਨ ਬਣਾਉਣ ਲਈ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਸ ਲਈ ਅਸੀਂ 100% ਭਰੋਸੇਯੋਗਤਾ ਹਾਸਲ ਕਰਨ ਲਈ ਮਾਡਲ ਦੇ ਆਉਟਪੁੱਟਸ ਨੂੰ ਸੀਮਿਤ ਕਰਨ ਵਾਸਤੇ ਇੱਕ deterministic, engineering-ਅਧਾਰਿਤ ਪਹੁੰਚ ਵੀ ਅਪਣਾਈ.

ਸੀਮਿਤ ਡੀਕੋਡਿੰਗ

ਸਾਡੀ ਪਹੁੰਚ constrained sampling ਜਾਂ constrained decoding ਨਾਮ ਦੀ ਇੱਕ ਤਕਨੀਕ 'ਤੇ ਆਧਾਰਿਤ ਹੈ। ਡਿਫਾਲਟ ਤੌਰ 'ਤੇ, ਜਦੋਂ ਆਉਟਪੁੱਟ ਤਿਆਰ ਕਰਨ ਲਈ ਮਾਡਲਾਂ ਦੀ ਸੈਂਪਲਿੰਗ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਉਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਅਸੀਮਿਤ ਹੁੰਦੇ ਹਨ ਅਤੇ ਅਗਲੇ ਆਉਟਪੁੱਟ ਵਜੋਂ ਸ਼ਬਦਾਵਲੀ ਵਿੱਚੋਂ ਕੋਈ ਵੀ ਟੋਕਨ ਚੁਣ ਸਕਦੇ ਹਨ। ਇਹ ਲਚਕ ਹੀ ਮਾਡਲਾਂ ਨੂੰ ਗਲਤੀਆਂ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦੀ ਹੈ; ਉਦਾਹਰਣ ਲਈ, ਉਹ ਆਮ ਤੌਰ 'ਤੇ ਕਿਸੇ ਵੀ ਵੇਲੇ curly brace ਟੋਕਨ ਸੈਂਪਲ ਕਰਨ ਲਈ ਮੁਕਤ ਹੁੰਦੇ ਹਨ, ਭਾਵੇਂ ਇਸ ਨਾਲ ਵੈਧ JSON ਨਾ ਬਣੇ। ਵੈਧ ਆਉਟਪੁੱਟ ਮਜਬੂਰਨ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਆਪਣੇ ਮਾਡਲਾਂ ਨੂੰ ਸਾਰੇ ਉਪਲਬਧ ਟੋਕਨ ਦੀ ਬਜਾਏ ਸਿਰਫ਼ ਉਹਨਾਂ ਟੋਕਨ ਤੱਕ ਸੀਮਿਤ ਕਰਦੇ ਹਾਂ ਜੋ ਦਿੱਤੇ ਗਏ ਸਕੀਮਾ ਮੁਤਾਬਕ ਵੈਧ ਹੋਣ.

ਵਿਹਾਰ ਵਿੱਚ ਇਹ ਸੀਮਾਕਰਨ ਲਾਗੂ ਕਰਨਾ ਚੁਣੌਤੀਪੂਰਨ ਹੋ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਮਾਡਲ ਦੇ ਆਉਟਪੁੱਟ ਦੌਰਾਨ ਵੈਧ ਟੋਕਨ ਬਦਲਦੇ ਰਹਿੰਦੇ ਹਨ। ਮੰਨ ਲਓ ਸਾਡੇ ਕੋਲ ਹੇਠਾਂ ਦਿੱਤਾ ਸਕੀਮਾ ਹੈ:

JSON

1
{
2
"type": "object",
3
"properties": {
4
"value": { "type": "number" }
5
},
6
"required": ["value"],
7
"additionalProperties": false
8
}

ਆਉਟਪੁੱਟ ਦੇ ਸ਼ੁਰੂ ਵਿੱਚ ਵੈਧ ਟੋਕਨ ਵਿੱਚ {, {“, {
ਆਦਿ ਵਰਗੀਆਂ ਚੀਜ਼ਾਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ। ਹਾਲਾਂਕਿ, ਜਦੋਂ ਮਾਡਲ ਪਹਿਲਾਂ ਹੀ {“val ਸੈਂਪਲ ਕਰ ਚੁੱਕਦਾ ਹੈ, ਤਦ { ਹੁਣ ਵੈਧ ਟੋਕਨ ਨਹੀਂ ਰਹਿੰਦਾ। ਇਸ ਲਈ ਸਾਨੂੰ dynamic constrained decoding ਲਾਗੂ ਕਰਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਜਵਾਬ ਦੀ ਸ਼ੁਰੂਆਤ 'ਤੇ ਪਹਿਲਾਂ ਹੀ ਨਿਰਧਾਰਤ ਕਰਨ ਦੀ ਬਜਾਏ ਹਰ ਟੋਕਨ ਜਨਰੇਟ ਹੋਣ ਤੋਂ ਬਾਅਦ ਇਹ ਤੈਅ ਕਰਨਾ ਪੈਂਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਟੋਕਨ ਵੈਧ ਹਨ.

ਇਹ ਕਰਨ ਲਈ, ਅਸੀਂ ਦਿੱਤੇ ਗਏ JSON ਸਕੀਮਾ ਨੂੰ ਇੱਕ context-free grammar (CFG) ਵਿੱਚ ਬਦਲਦੇ ਹਾਂ। ਗ੍ਰੈਮਰ ਨਿਯਮਾਂ ਦਾ ਉਹ ਸਮੂਹ ਹੁੰਦਾ ਹੈ ਜੋ ਇੱਕ ਭਾਸ਼ਾ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ, ਅਤੇ context-free grammar ਉਹ ਗ੍ਰੈਮਰ ਹੁੰਦੀ ਹੈ ਜੋ ਖਾਸ ਨਿਯਮਾਂ ਦੀ ਪਾਲਣਾ ਕਰਦੀ ਹੈ। ਤੁਸੀਂ JSON ਅਤੇ JSON ਸਕੀਮਾ ਨੂੰ ਖਾਸ ਕਿਸਮ ਦੀਆਂ ਭਾਸ਼ਾਵਾਂ ਵਜੋਂ ਸਮਝ ਸਕਦੇ ਹੋ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਨਿਯਮ ਹੁੰਦੇ ਹਨ ਕਿ ਉਸ ਭਾਸ਼ਾ ਦੇ ਅੰਦਰ ਕੀ ਵੈਧ ਹੈ। ਜਿਵੇਂ ਅੰਗਰੇਜ਼ੀ ਵਿੱਚ ਬਿਨਾਂ ਕਿਰਿਆ ਵਾਲਾ ਵਾਕ ਵੈਧ ਨਹੀਂ ਹੁੰਦਾ, ਓਸੇ ਤਰ੍ਹਾਂ JSON ਵਿੱਚ trailing comma ਵੈਧ ਨਹੀਂ ਹੁੰਦਾ.

ਇਸ ਲਈ, ਹਰ JSON ਸਕੀਮਾ ਲਈ ਅਸੀਂ ਇੱਕ ਗ੍ਰੈਮਰ ਗਣਨਾ ਕਰਦੇ ਹਾਂ ਜੋ ਉਸ ਸਕੀਮਾ ਦਾ ਪ੍ਰਤੀਨਿਧਿਤਵ ਕਰਦੀ ਹੈ, ਅਤੇ ਇਸ ਦੇ ਭਾਗਾਂ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹਾਂ ਤਾਂ ਜੋ ਮਾਡਲ ਸੈਂਪਲਿੰਗ ਦੌਰਾਨ ਇਹ ਆਸਾਨੀ ਨਾਲ ਉਪਲਬਧ ਹੋ ਸਕੇ। ਇਸੇ ਕਰਕੇ ਨਵੇਂ ਸਕੀਮਾ ਨਾਲ ਪਹਿਲੀ ਬੇਨਤੀ 'ਤੇ ਲੇਟੈਂਸੀ ਪੈਨਲਟੀ ਆਉਂਦੀ ਹੈ—ਸਾਨੂੰ ਇਹ ਆਰਟੀਫੈਕਟ ਬਣਾਉਣ ਲਈ ਸਕੀਮਾ ਦਾ ਪ੍ਰੀਪ੍ਰੋਸੈਸ ਕਰਨਾ ਪੈਂਦਾ ਹੈ, ਜਿਸਨੂੰ ਅਸੀਂ ਸੈਂਪਲਿੰਗ ਦੌਰਾਨ ਕੁਸ਼ਲਤਾਪੂਰਵਕ ਵਰਤ ਸਕੀਏ.

ਸੈਂਪਲਿੰਗ ਦੌਰਾਨ, ਹਰ ਟੋਕਨ ਤੋਂ ਬਾਅਦ ਸਾਡਾ inference engine ਪਹਿਲਾਂ ਜਨਰੇਟ ਕੀਤੇ ਟੋਕਨ ਅਤੇ ਗ੍ਰੈਮਰ ਦੇ ਉਹਨਾਂ ਨਿਯਮਾਂ ਦੇ ਆਧਾਰ 'ਤੇ ਇਹ ਨਿਰਧਾਰਤ ਕਰੇਗਾ ਕਿ ਅਗਲੇ ਕਿਹੜੇ ਟੋਕਨ ਵੈਧ ਤਰੀਕੇ ਨਾਲ ਬਣ ਸਕਦੇ ਹਨ। ਫਿਰ ਅਸੀਂ ਇਸ ਟੋਕਨ ਸੂਚੀ ਦੀ ਵਰਤੋਂ ਅਗਲੇ ਸੈਂਪਲਿੰਗ ਕਦਮ ਨੂੰ mask ਕਰਨ ਲਈ ਕਰਦੇ ਹਾਂ, ਜਿਸ ਨਾਲ ਅਵੈਧ ਟੋਕਨ ਦੀ ਸੰਭਾਵਨਾ ਅਸਲ ਵਿੱਚ 0 ਹੋ ਜਾਂਦੀ ਹੈ। ਕਿਉਂਕਿ ਅਸੀਂ ਸਕੀਮਾ ਦਾ ਪ੍ਰੀਪ੍ਰੋਸੈਸ ਕਰ ਚੁੱਕੇ ਹਾਂ, ਅਸੀਂ ਇਹ ਕੰਮ ਘੱਟ ਤੋਂ ਘੱਟ ਲੇਟੈਂਸੀ ਓਵਰਹੈੱਡ ਨਾਲ ਕੁਸ਼ਲ ਤਰੀਕੇ ਨਾਲ ਕਰਨ ਲਈ ਇੱਕ cached data structure ਵਰਤ ਸਕਦੇ ਹਾਂ.

ਵਿਕਲਪਿਕ ਪਹੁੰਚਾਂ

ਇਸ ਸਮੱਸਿਆ ਲਈ ਵਿਕਲਪਿਕ ਪਹੁੰਚਾਂ constrained decoding ਲਈ ਅਕਸਰ finite state machines (FSMs) ਜਾਂ regexes (ਆਮ ਤੌਰ 'ਤੇ FSMs ਨਾਲ ਲਾਗੂ ਕੀਤੀਆਂ) ਵਰਤਦੀਆਂ ਹਨ। ਇਹ ਇਸ ਮਾਇਨੇ ਵਿੱਚ ਇਕੋ ਜਿਹਾ ਕੰਮ ਕਰਦੀਆਂ ਹਨ ਕਿ ਇਹ ਹਰ ਟੋਕਨ ਬਣਨ ਤੋਂ ਬਾਅਦ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਵੈਧ ਟੋਕਨਾਂ ਨੂੰ ਅਪਡੇਟ ਕਰਦੀਆਂ ਹਨ, ਪਰ CFG ਪਹੁੰਚ ਨਾਲ ਇਨ੍ਹਾਂ ਦੇ ਕੁਝ ਮਹੱਤਵਪੂਰਨ ਫਰਕ ਹਨ। ਖਾਸ ਤੌਰ 'ਤੇ, CFGs FSMs ਨਾਲੋਂ ਭਾਸ਼ਾਵਾਂ ਦੇ ਹੋਰ ਵੱਡੇ ਵਰਗ ਨੂੰ ਪ੍ਰਗਟ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਅਮਲ ਵਿੱਚ, ਉੱਪਰ ਦਿਖਾਏ value ਸਕੀਮਾ ਵਰਗੀਆਂ ਬਹੁਤ ਸਧਾਰਣ ਸਕੀਮਾਵਾਂ ਲਈ ਇਹ ਗੱਲ ਮਹੱਤਵਪੂਰਨ ਨਹੀਂ ਹੁੰਦੀ। ਹਾਲਾਂਕਿ, ਸਾਡੇ ਅਨੁਸਾਰ ਹੋਰ ਜਟਿਲ ਸਕੀਮਾਵਾਂ ਲਈ ਇਹ ਫਰਕ ਮਹੱਤਵ ਰੱਖਦਾ ਹੈ, ਜਿਨ੍ਹਾਂ ਵਿੱਚ nested ਜਾਂ recursive data structures ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। ਉਦਾਹਰਣ ਵਜੋਂ, FSMs ਆਮ ਤੌਰ 'ਤੇ recursive types ਨੂੰ ਪ੍ਰਗਟ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਕਿ FSM-ਆਧਾਰਿਤ ਪਹੁੰਚਾਂ ਡੂੰਘੇ ਤੌਰ 'ਤੇ nested JSON ਵਿੱਚ parentheses ਨੂੰ ਮੇਲ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਮਹਿਸੂਸ ਕਰ ਸਕਦੀਆਂ ਹਨ। ਹੇਠਾਂ ਇੱਕ ਨਮੂਨਾ recursive ਸਕੀਮਾ ਦਿੱਤਾ ਗਿਆ ਹੈ ਜੋ OpenAI API 'ਤੇ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਨਾਲ ਸਮਰਥਿਤ ਹੈ, ਪਰ FSM ਨਾਲ ਇਸਨੂੰ ਪ੍ਰਗਟ ਕਰਨਾ ਸੰਭਵ ਨਹੀਂ ਹੁੰਦਾ.

JSON

1
{
2
"name": "ui",
3
"description": "Dynamically generated UI",
4
"strict": true,
5
"schema": {
6
"type": "object",
7
"properties": {
8
"type": {
9
"type": "string",
10
"description": "The type of the UI component",
11
"enum": ["div", "button", "header", "section", "field", "form"]
12
},
13
"label": {
14
"type": "string",
15
"description": "The label of the UI component, used for buttons or form fields"
16
},
17
"children": {
18
"type": "array",
19
"description": "Nested UI components",
20
"items": {
21
"$ref": "#"
22
}
23
},
24
"attributes": {
25
"type": "array",
26
"description": "Arbitrary attributes for the UI component, suitable for any element",
27
"items": {
28
"type": "object",
29
"properties": {
30
"name": {
31
"type": "string",
32
"description": "The name of the attribute, for example onClick or className"
33
},
34
"value": {
35
"type": "string",
36
"description": "The value of the attribute"
37
}
38
}
39
}
40
}
41
},
42
"required": ["type", "label", "children", "attributes"],
43
"additionalProperties": false
44
}
45
}

ਧਿਆਨ ਦਿਓ ਕਿ ਹਰ UI ਐਲੀਮੈਂਟ ਦੇ ਮਨਮਾਨੇ child ਹੋ ਸਕਦੇ ਹਨ ਜੋ root schema ਨੂੰ recursively ਹਵਾਲਾ ਦਿੰਦੇ ਹਨ। ਇਹ ਲਚਕਦਾਰਤਾ CFG ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ.

ਸੀਮਾਵਾਂ ਅਤੇ ਪਾਬੰਦੀਆਂ

ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਵਰਤਦੇ ਸਮੇਂ ਧਿਆਨ ਵਿੱਚ ਰੱਖਣ ਲਈ ਕੁਝ ਸੀਮਾਵਾਂ ਹਨ:

  • ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਕੇਵਲ JSON ਸਕੀਮਾ ਦੇ ਇੱਕ ਹਿੱਸੇ ਦਾ ਹੀ ਸਮਰਥਨ ਕਰਦੇ ਹਨ, ਜਿਸ ਦਾ ਵੇਰਵਾ ਸਾਡੇ docs ਵਿੱਚ(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਦਿੱਤਾ ਗਿਆ ਹੈ। ਇਹ ਸਾਨੂੰ ਸੰਭਵ ਤੌਰ 'ਤੇ ਸਭ ਤੋਂ ਵਧੀਆ ਕਾਰਗੁਜ਼ਾਰੀ ਯਕੀਨੀ ਬਣਾਉਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ.
  • ਨਵੇਂ ਸਕੀਮਾ ਨਾਲ ਪਹਿਲਾ API ਜਵਾਬ ਵਾਧੂ ਲੇਟੈਂਸੀ ਲਿਆਏਗਾ, ਪਰ ਬਾਅਦਲੇ ਜਵਾਬ ਤੇਜ਼ ਹੋਣਗੇ ਅਤੇ ਕੋਈ ਲੇਟੈਂਸੀ ਪੈਨਲਟੀ ਨਹੀਂ ਹੋਵੇਗੀ। ਇਸ ਦਾ ਕਾਰਨ ਇਹ ਹੈ ਕਿ ਪਹਿਲੀ ਬੇਨਤੀ ਦੌਰਾਨ ਅਸੀਂ ਉੱਪਰ ਦਰਸਾਏ ਅਨੁਸਾਰ ਸਕੀਮਾ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਦੇ ਹਾਂ ਅਤੇ ਫਿਰ ਇਨ੍ਹਾਂ ਆਰਟੀਫੈਕਟਸ ਨੂੰ ਬਾਅਦ ਵਿੱਚ ਤੇਜ਼ ਮੁੜ-ਵਰਤੋਂ ਲਈ ਕੈਸ਼ ਕਰਦੇ ਹਾਂ। ਆਮ ਸਕੀਮਾਵਾਂ ਨੂੰ ਪਹਿਲੀ ਬੇਨਤੀ 'ਤੇ ਪ੍ਰੋਸੈਸ ਕਰਨ ਲਈ 10 ਸਕਿੰਟ ਤੋਂ ਘੱਟ ਸਮਾਂ ਲੱਗਦਾ ਹੈ, ਪਰ ਹੋਰ ਜਟਿਲ ਸਕੀਮਾਵਾਂ ਨੂੰ ਇੱਕ ਮਿੰਟ ਤੱਕ ਲੱਗ ਸਕਦਾ ਹੈ.
  • ਜੇ ਮਾਡਲ ਕਿਸੇ ਅਸੁਰੱਖਿਅਤ ਬੇਨਤੀ ਨੂੰ ਅਸਵੀਕਾਰ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕਰਦਾ ਹੈ, ਤਾਂ ਮਾਡਲ ਸਕੀਮਾ ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ। ਜੇ ਇਹ ਅਸਵੀਕਾਰ ਕਰਦਾ ਹੈ, ਤਾਂ ਇਹ ਦਰਸਾਉਣ ਲਈ ਵਾਪਸੀ ਸੁਨੇਹੇ ਵਿੱਚ refusal ਬੂਲੀਅਨ true 'ਤੇ ਸੈੱਟ ਹੋਵੇਗਾ.
  • ਜੇ ਜਨਰੇਸ਼ਨ ਪੂਰਾ ਹੋਣ ਤੋਂ ਪਹਿਲਾਂ max_tokens ਜਾਂ ਕੋਈ ਹੋਰ stop condition ਆ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਮਾਡਲ ਸਕੀਮਾ ਦੀ ਪਾਲਣਾ ਕਰਨ ਵਿੱਚ ਅਸਫਲ ਹੋ ਸਕਦਾ ਹੈ.
  • ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਮਾਡਲ ਦੀਆਂ ਹਰ ਕਿਸਮ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਨਹੀਂ ਰੋਕਦੇ। ਉਦਾਹਰਣ ਲਈ, ਮਾਡਲ ਹਾਲੇ ਵੀ JSON ਆਬਜੈਕਟ ਦੇ ਮੁੱਲਾਂ ਦੇ ਅੰਦਰ ਗਲਤੀਆਂ ਕਰ ਸਕਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਗਣਿਤ ਸਮੀਕਰਨ ਵਿੱਚ ਕੋਈ ਕਦਮ ਗਲਤ ਕਰ ਦੇਣਾ। ਜੇ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਗਲਤੀਆਂ ਮਿਲਦੀਆਂ ਹਨ, ਤਾਂ ਅਸੀਂ ਸਿਸਟਮ ਨਿਰਦੇਸ਼ਾਂ ਵਿੱਚ ਉਦਾਹਰਣਾਂ ਦੇਣ ਜਾਂ ਕੰਮਾਂ ਨੂੰ ਹੋਰ ਆਸਾਨ ਉਪ-ਕੰਮਾਂ ਵਿੱਚ ਵੰਡਣ ਦੀ ਸਿਫਾਰਸ਼ ਕਰਦੇ ਹਾਂ.
  • ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ parallel function calls ਨਾਲ ਅਨੁਕੂਲ ਨਹੀਂ ਹਨ। ਜਦੋਂ ਕੋਈ parallel function call ਜਨਰੇਟ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਇਹ ਦਿੱਤੇ ਗਏ ਸਕੀਮਾਵਾਂ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾ ਸਕਦੀ। parallel function calling ਨੂੰ ਅਯੋਗ ਕਰਨ ਲਈ parallel_tool_calls: false ਸੈੱਟ ਕਰੋ.
  • ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਨਾਲ ਦਿੱਤੇ ਗਏ JSON ਸਕੀਮਾਜ਼ Zero Data Retention(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) (ZDR) ਲਈ ਯੋਗ ਨਹੀਂ ਹਨ.

ਉਪਲਬਧਤਾ

ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਅੱਜ API ਵਿੱਚ ਆਮ ਤੌਰ 'ਤੇ ਉਪਲਬਧ ਹਨ.

ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਨਾਲ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ API ਵਿੱਚ ਉਹਨਾਂ ਸਭ ਮਾਡਲਾਂ 'ਤੇ ਉਪਲਬਧ ਹਨ ਜੋ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਦੇ ਹਨ। ਇਸ ਵਿੱਚ ਸਾਡੇ ਸਭ ਤੋਂ ਨਵੇਂ ਮਾਡਲ (
gpt-4o, gpt-4o-mini), gpt-4-0613 ਅਤੇ gpt-3.5-turbo-0613 ਤੋਂ ਬਾਅਦ ਅਤੇ ਸਮੇਤ ਸਾਰੇ ਮਾਡਲ, ਅਤੇ ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਦਾ ਸਮਰਥਨ ਕਰਨ ਵਾਲੇ ਕੋਈ ਵੀ ਫਾਈਨ-ਟਿਊਨ ਕੀਤੇ ਮਾਡਲ ਸ਼ਾਮਲ ਹਨ। ਇਹ ਕਾਰਗੁਜ਼ਾਰੀ Chat Completions API, Assistants API, ਅਤੇ Batch API 'ਤੇ ਉਪਲਬਧ ਹੈ। ਫੰਕਸ਼ਨ ਕਾਲਿੰਗ ਨਾਲ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਵਿਜ਼ਨ ਇਨਪੁੱਟਸ ਨਾਲ ਵੀ ਅਨੁਕੂਲ ਹਨ.

ਰਿਸਪਾਂਸ ਫਾਰਮੈਟਸ ਨਾਲ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ
gpt-4o-mini ਅਤੇ gpt-4o-2024-08-06 ਅਤੇ ਇਨ੍ਹਾਂ ਮਾਡਲਾਂ 'ਤੇ ਆਧਾਰਿਤ ਕਿਸੇ ਵੀ ਫਾਈਨ-ਟਿਊਨਜ਼ 'ਤੇ ਉਪਲਬਧ ਹਨ। ਇਹ ਕਾਰਗੁਜ਼ਾਰੀ Chat Completions API, Assistants API, ਅਤੇ Batch API 'ਤੇ ਉਪਲਬਧ ਹੈ। ਰਿਸਪਾਂਸ ਫਾਰਮੈਟਸ ਨਾਲ ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਵਿਜ਼ਨ ਇਨਪੁੱਟਸ ਨਾਲ ਵੀ ਅਨੁਕੂਲ ਹਨ.

ਨਵੇਂ
gpt-4o-2024-08-06 'ਤੇ ਸਵਿਚ ਕਰਕੇ, ਡਿਵੈਲਪਰ gpt-4o-2024-05-13 ਨਾਲ ਤੁਲਨਾ ਵਿੱਚ ਇਨਪੁੱਟਸ 'ਤੇ 50% ($2.50/1M input tokens) ਅਤੇ ਆਉਟਪੁੱਟਸ 'ਤੇ 33% ($10.00/1M output tokens) ਦੀ ਬਚਤ ਕਰਦੇ ਹਨ.

ਸਟਰੱਕਚਰਡ ਆਉਟਪੁੱਟਸ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ, ਸਾਡੇ
docs(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੁੱਲ੍ਹਦਾ ਹੈ) ਵੇਖੋ.

ਆਭਾਰ

ਲੇਖਕ

Michelle Pokrass

ਮੁੱਖ ਯੋਗਦਾਨਕਰਤਾ

Chris Colby, Melody Guan, Michelle Pokrass, Ted Sanders, Brian Zhang

ਆਭਾਰ

John Allard, Filipe de Avila Belbute Peres, Ilan Bigio, Owen Campbell-Moore, Chen Ding, Atty Eleti, Elie Georges, Katia Gil Guzman, Jeff Harris, Johannes Heidecke, Beth Hoover, Romain Huet, Tomer Kaftan, Jillian Khoo, Karolis Kosas, Ryan Liu, Kevin Lu, Lindsay McCallum, Rohan Nuttall, Joe Palermo, Leher Pathak, Ishaan Singal, Felipe Petroski Such, Freddie Sulit, David Weedon