U bood nuxurka ugu muhiimsan
OpenAI

Agosto 6, 2024

Shirkad

Soo bandhigista Soo Saaridyo Habeysan ee API-ga

Waxaan API-ga kusoo kordhinaynaa Soo Saaridyo Habeysan—soo saaridda noocku hadda si la isku hallayn karo ayay ugu hoggaansamaysaa JSON Schemas ay horumariyayaashu bixiyeen.

Sawirku wuxuu muujinayaa qaab aan matalaad gaar ah lahayn oo ka kooban afar-geesyo yaryar oo leh hoosadyo kala duwan oo buluug, cagaar, iyo jaalle khafiif ah. Afar-geesyada waxaa loo habeeyey qaab shabakad u eg, taasoo abuuraysa saameyn moosaayig ah oo leh midabbo jilicsan oo pastel ah.

Sannadkii hore DevDay, waxaan soo bandhignay habka JSON—dhisme faa'iido leh oo loogu talagalay horumariyayaasha doonaya inay ku dhisaan codsiyo la isku hallayn karo noocyadeenna. Inkastoo habka JSON uu hagaajiyo isku hallaynta noocka ee soo saaridda wax soo saar JSON sax ah, haddana ma dammaanad qaado in jawaabta noocku waafaqi doonto bandhig-qorshe gaar ah. Maanta waxaan API-ga kusoo bandhigaynaa Soo Saaridyo Habeysan, astaamo cusub oo loogu talagalay in lagu xaqiijiyo in wax soo saarka uu noocku abuuro si sax ah ugu waafaqi doono JSON Schemas ay horumariyayaashu bixiyaan.

Abuurista xog habeysan laga soo saaro gelinno aan habeysneyn waa mid ka mid ah adeegsiyada aasaasiga ah ee AI ee codsiyada maanta. Horumariyayaashu waxay isticmaalaan OpenAI API si ay u dhisaan kaaliyeyaal awood leh oo leh karti ay xog ku soo qaadaan oo su'aalo kaga jawaabaan iyagoo maraya xusida function-ka(ku furmaa daaqad cusub), uga soo saaraan xog habeysan gelinta xogta, uguna dhisaan socod-hawleedyo wakiil oo dhowr-tallaabo leh oo u oggolaanaya LLMs inay falal qaadaan. Horumariyayaashu muddo dheer waxay ka shaqaynayeen xaddidaadaha LLMs ee aaggan iyagoo adeegsanaya qalab open source ah, weydiin, iyo dib-u-dirista codsiyada marar badan si loo xaqiijiyo in soo saaridda noocku waafaqdo qaababka ay u baahan yihiin si ay ula shaqeyso nidaamyadooda. Soo Saaridyo Habeysan waxay xallisaa dhibaatadan iyadoo ku xaddidaysa noocyada OpenAI inay waafaqaan bandhig-qorsheyaasha ay horumariyayaashu bixiyeen iyo iyadoo tababaraysa noocyadeenna si ay si ka wanaagsan u fahmaan bandhig-qorsheyaasha adag.

Qiimeynahayaga raacidda bandhig-qorshaha JSON ee adag, noockeenna cusub gpt-4o-2024-08-06 oo leh Soo Saaridyo Habeysan wuxuu helay boqolkiiba 100 oo dhammaystiran. Marka la barbar dhigo, gpt-4-0613 wuxuu helaa wax ka yar 40%.

Iyada oo la adeegsanayo Soo Saaridyo Habeysan, gpt-4o-2024-08-06 wuxuu gaarayaa isku hallayn 100% ah qiimeynahayaga, isagoo si qumman ula jaanqaadaya bandhig-qorsheyaasha soo saaridda.

Sida loo isticmaalo Soo Saaridyo Habeysan

Waxaan API-ga kusoo bandhigaynaa Soo Saaridyo Habeysan laba qaab: 

1. xusida function-ka: Soo Saaridyo Habeysan iyada oo loo marayo tools waxaa la heli karaa marka la dejiyo strict: true gudaha qeexitaanka function-kaaga. Astaantani waxay la shaqaysaa dhammaan noocyada taageera tools, oo ay ku jiraan dhammaan noocyada gpt-4-0613 iyo gpt-3.5-turbo-0613 iyo wixii ka dambeeya. Marka Soo Saaridyo Habeysan la hawlgeliyo, soo saaridda noocku waxay waafaqi doontaa qeexitaanka qalabka ee la bixiyay.

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. Ikhtiyaar cusub oo loogu talagalay response_format xuduudda: horumariyayaashu hadda waxay ku bixin karaan JSON Schema iyagoo adeegsanaya json_schema, oo ah ikhtiyaar cusub oo loogu talagalay xuduudda response_format. Tani waxay faa'iido leedahay marka noocku aanu wacayn qalab, balse uu si habeysan ugu jawaabayo isticmaalaha. Astaantani waxay la shaqaysaa noocyadeenna GPT‑4o ee ugu cusub: gpt-4o-2024-08-06, oo maanta la sii daayay, iyo gpt-4o-mini-2024-07-18. Marka response_format lagu bixiyo strict: true, soo saaridda noocku waxay waafaqi doontaa bandhig-qorshaha la bixiyay.

Codsi

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
}

Soo Saaridyo Habeysan oo ammaan ah

Badbaadadu waa mudnaanta koowaad ee OpenAI—shaqeynta cusub ee Soo Saaridyo Habeysan waxay u hoggaansami doontaa siyaasadaha badbaado ee aan hadda leenahay waxayna wali u oggolaan doontaa noocka inuu diido codsi aan ammaan ahayn. Si horumarintu u fududaato, waxaa jira qiime xaraf ah oo cusub oo refusal ah oo ku jira jawaabaha API-ga kaas oo u oggolaanaya horumariyayaasha inay si barnaamij ahaan ah u ogaadaan haddii noocku soo saaray diidmo halkii uu ka soo saari lahaa wax waafaqsan bandhig-qorshaha. Marka jawaabtu aysan ku jirin diidmo oo jawaabta noocka aan si degdeg ah loo joojin (sida lagu muujiyey finish_reason), markaas jawaabta noocku si la isku hallayn karo ayay u soo saari doontaa JSON sax ah oo waafaqsan bandhig-qorshaha la bixiyay.

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
}

Taageerada asalka ah ee SDK

SDK-yadeenna Python iyo Node waa la cusboonaysiiyay iyadoo lagu daray taageero asali ah oo loogu talagalay Soo Saaridyo Habeysan. Bixinta bandhig-qorshe loogu talagalay tools ama ahaan qaab jawaabeed waxay u fudud tahay sida bixinta shay Pydantic ama Zod ah, SDK-yadeennuna waxay qaban doonaan u beddelidda nooca xogta una beddeli doonaan bandhig-qorshe JSON oo la taageero, si toos ah ayey u kala furfuri doonaan jawaabta JSON una gelin doonaan qaab-dhismeedka xogta ee la nooleeyay, waxayna falanqayn doonaan diidmooyinka haddii ay dhacaan.

Tusaalooyinka soo socda waxay muujinayaan taageerada asalka ah ee Soo Saaridyo Habeysan oo leh xusida function-ka.

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)

Taageerada asalka ah ee Soo Saaridyo Habeysan sidoo kale waxaa loo heli karaa 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)

Adeegsiyo dheeraad ah

Horumariyayaashu badanaa waxay adeegsadaan noocyada OpenAI si ay u abuuraan xog habeysan oo loogu talagalay adeegsiyo kala duwan. Tusaalooyin dheeraad ah waxaa ka mid ah:

Si firfircoon u abuurista isdhexgallada isticmaalaha iyadoo lagu saleynayo ujeeddada isticmaalaha

Tusaale ahaan, horumariyayaashu waxay isticmaali karaan Soo Saaridyo Habeysan si ay u abuuraan codsiyo soo saara koodh ama UI. Dhammaan tusaalooyinka soo socda waxay isticmaalaan isla response_format, waxaana loo isticmaali karaa in lagu abuuro UI-yo kala duwan oo ku salaysan gelinta isticmaalaha.

Nidaamka
Waxaad tahay kaaliye is-dhexgalka isticmaalaha. Shaqadaadu waa inaad ka caawiso isticmaaleyaasha inay arkaan mareegtooda iyo fikradaha app-ka.
Qaabka jawaabta
Kaaliye
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

Kala saaridda jawaabta ugu dambeysa iyo caqliyeynta taageeraysa ama faallooyin dheeraad ah

Waxay faa'iido yeelan kartaa in noocka la siiyo beer gaar ah oo loogu talagalay silsiladda fikirka si loo hagaajiyo tayada ugu dambeysa ee jawaabta.

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
}

Ka soo saaridda xog habeysan xog aan habeysneyn

Tusaale ahaan, in noocka lagu amro inuu ka soo saaro waxyaabo sida hawlaha la qabanayo, taariikhaha kama dambaysta ah, iyo xil-qaybinnada qoraallada kulanka.

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
}

Gudaha nidaamka

Waxaan qaadannay hab laba qaybood ka kooban si aan u hagaajinno isku hallaynta soo saaridda noocka ee waafaqda JSON Schema. Marka hore, waxaan tababarnay noockeenna ugu cusub gpt-4o-2024-08-06 si uu u fahmo bandhig-qorsheyaasha adag iyo sida ugu fiican ee loo soo saaro wax waafaqa. Hase yeeshee, dabeecadda noocku asal ahaan waa aan go'anayn—inkastoo horumarrada waxqabad ee noockan (93% cabbirkeenna), haddana ma gaadhin isku hallaynta ay horumariyayaashu u baahan yihiin si ay u dhisaan codsiyo adag. Sidaas awgeed waxaan sidoo kale qaadannay hab go'an oo ku salaysan injineernimo si aan u xaddidno soo saaridda noocka loona gaaro isku hallayn 100% ah.

Kala furfurid xaddidan

Habkayagu wuxuu ku salaysan yahay farsamo loo yaqaan constrained sampling ama constrained decoding. Sida caadiga ah, marka noocyada laga soo xulo si ay u soo saaraan wax soo saar, gebi ahaanba lama xaddido waxayna dooran karaan token kasta oo ka mid ah eraybixinta sidii soo saaridda xigta. Dabacsanaantan ayaa ah waxa u oggolaanaya noocyada inay qaldaan; tusaale ahaan, guud ahaan way xor yihiin inay token-ka qawska qalloocan soo xushaan wakhti kasta, xitaa marka taasi aysan soo saari lahayn JSON sax ah. Si loo khasbo soo saarid sax ah, waxaan noocyadeenna ku xaddidnaa oo keliya token-yada ansaxa ah marka loo eego bandhig-qorshaha la bixiyay, halkii ay ka ahaan lahaayeen dhammaan token-yada la heli karo.

Way adkaan kartaa in xaddidaaddan si dhab ah loo hirgeliyo, maadaama token-yada ansaxa ahi ay ku kala duwan yihiin guud ahaan soo saaridda noocka. Aynu nidhaahno waxaan haynaa bandhig-qorshahan soo socda:

JSON

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

Token-yada ansaxa ah bilowga soo saaridda waxaa ka mid ah waxyaabo sida {, {“, {
, iwm. Si kastaba ha ahaatee, marka noocku mar hore soo xulay {“val, markaas { mar dambe ma aha token ansax ah. Sidaas darteed waxaan u baahanahay inaan hirgelinno kala furfurid xaddidan oo firfircoon, oo aan go'aamino token-yada ansaxa ah kadib marka token kasta la abuuro, halkii laga go'aamin lahaa horay bilowga jawaabta.

Si tan loo sameeyo, waxaan bandhig-qorshaha JSON Schema ee la bixiyay u beddelnaa naxwe aan ku xirnayn macnaha guud (CFG). Naxwe waa xeerar qeexa luuqad, naxwe aan ku xirnayn macnaha guudna waa naxwe waafaqsan xeerar gaar ah. Waxaad JSON iyo JSON Schema u qaadan kartaa luuqado gaar ah oo leh xeerar qeexa waxa ansaxa ka ah gudaha luuqadda. Sida aysan ugu ansax ahayn Ingiriisiga in la helo jumlad aan fal lahayn, sidoo kale JSON kuma ansaxna in ay leedahay hakad daba socda.

Sidaas darteed, JSON Schema kasta, waxaan u xisaabinnaa naxwe metelaya bandhig-qorshahaas, waxaana sii farsamaynaa qaybaheeda si si fudud loo heli karo inta lagu jiro soo xulashada noocka. Tani waa sababta codsiga ugu horreeya ee leh bandhig-qorshe cusub uu u yeesho ganaax dib-u-dhac ah—waa inaan sii farsamaynaa bandhig-qorshaha si aan u abuurno walaxdan aan si hufan ugu adeegsan karno inta lagu jiro soo xulashada.

Inta lagu jiro soo xulashada, token kasta kadib, mashiinkeenna inference-ku wuxuu go'aamin doonaa token-yada ansaxa ah ee xiga lagu soo saari karo iyadoo lagu saleynayo token-yadii hore loo soo saaray iyo xeerarka naxwaha dhexdiisa ee tilmaamaya token-yada xiga ee ansaxa ah. Kadibna waxaan u adeegsaneynaa liiskan token-yada si aan u daboolno tallaabada soo xulashada xigta, taas oo si wax ku ool ah u dhigaysa suurtagalnimada token-yada aan ansaxa ahayn 0. Sababtoo ah bandhig-qorshaha waan sii farsamaynay, waxaan adeegsan karnaa qaab-dhismeed xogeed la kaydiyey si aan tan si hufan ugu sameyno, iyadoo dib-u-dhacu yar yahay.

Habab kale

Hababka kale ee dhibaatadan badanaa waxay u adeegsadaan finite state machines (FSMs) ama regexes (guud ahaan lagu hirgeliyo FSMs) kala furfurid xaddidan. Kuwani si la mid ah ayey u shaqeeyaan maadaama ay si firfircoon u cusboonaysiiyaan token-yada ansaxa ah kadib marka token kasta la soo saaro, laakiin waxay leeyihiin kala duwanaansho muhiim ah marka loo eego habka CFG. Gaar ahaan, CFG-yadu waxay muujin karaan nooc luuqado ah oo ka ballaadhan kuwa FSM-yadu muujin karaan. Ficil ahaan, tani wax badan kuma laha bandhig-qorsheyaal aad u fudud sida bandhig-qorshaha value ee kor lagu muujiyay. Hase yeeshee, waxaan u aragnaa in farqigu muhiim u yahay bandhig-qorsheyaal aad u adag oo ku lug leh qaab-dhismeedyo xogeed isku dhex jira ama soo noqnoqda. Tusaale ahaan, FSM-yadu guud ahaan ma muujin karaan noocyo soo noqnoqda, taas oo ka dhigan in hababka ku salaysan FSM laga yaabo inay ku dhibtoodaan iswaafajinta qawsyada JSON aadka u isku dhex jira. Waxa soo socda waa tusaale bandhig-qorshe soo noqnoqda ah oo laga taageero OpenAI API iyadoo la adeegsanayo Soo Saaridyo Habeysan balse aan suurtagal ku ahaan lahayn in lagu muujiyo 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
}

Ogow in walax kasta oo UI ah ay yeelan karto carruur aan xadidnayn oo si soo noqnoqod leh ugu tixraacaya bandhig-qorshaha asalka ah. Dabacsanaantan waa wax uu habka CFG bixiyo.

Xaddidaadaha iyo xeerarka

Waxaa jira dhowr xaddidaad oo mudan in maskaxda lagu hayo marka la isticmaalayo Soo Saaridyo Habeysan:

  • Soo Saaridyo Habeysan waxay oggolaanayaan oo keliya qayb ka mid ah JSON Schema, sida si faahfaahsan loogu sharxay dukumentiyadeenna(ku furmaa daaqad cusub). Tani waxay naga caawisaa inaan xaqiijino waxqabadka ugu wanaagsan ee suurtagalka ah.
  • Jawaabta ugu horreysa ee API-ga ee bandhig-qorshe cusub waxay yeelan doontaa dib-u-dhac dheeraad ah, laakiin jawaabaha xiga way degdegayaan iyada oo aan wax ganaax dib-u-dhac ahi jirin. Tani waa sababta oo ah codsiga ugu horreeya gudaheeda, waxaan farsamaynaa bandhig-qorshaha sida kor lagu tilmaamay ka dibna waxaan kaydinnaa waxyaabahan si dib loogu adeegsado si degdeg ah mar dambe. Bandhig-qorsheyaasha caadiga ahi waxay qaataan wax ka yar 10 ilbiriqsi in lagu farsameeyo codsiga ugu horreeya, balse kuwa ka adag waxay qaadan karaan ilaa hal daqiiqo.
  • Noocku wuu ku guul-darraysan karaa inuu raaco bandhig-qorshaha haddii noocku doorto inuu diido codsi aan ammaan ahayn. Haddii uu doorto inuu diido, farriinta soo noqoshadu waxay yeelan doontaa boolean-ka refusal oo loo dejiyey true si taas loo muujiyo. 
  • Noocku wuu ku guul-darraysan karaa inuu raaco bandhig-qorshaha haddii abuuristu gaarto max_tokens ama xaalad kale oo joogsi ah ka hor inta aan la dhammayn. 
  • Soo Saaridyo Habeysan kama hortagaan dhammaan noocyada khaladaadka noocka. Tusaale ahaan, noocku wali wuu qaldi karaa gudaha qiimayaasha shayga JSON (tusaale ahaan, inuu tallaabo ku qaldo xisaab). Haddii horumariyayaashu helaan khaladaad, waxaan kugula talinaynaa in tusaalooyin lagu bixiyo tilmaamaha nidaamka ama hawlaha loo kala jebiyo hawlo-hoosaadyo fudud.
  • Soo Saaridyo Habeysan lama jaanqaadaan xusida function-ka ee barbar socda. Marka xusida function-ka ee barbar socota la abuuro, waxa laga yaabaa inaysan waafaqin bandhig-qorsheyaasha la bixiyay. Deji parallel_tool_calls: false si aad u damiso xusida function-ka ee barbar socota.
  • JSON Schemas lagu bixiyo Soo Saaridyo Habeysan uma qalmaan xog haynta eberka ah(ku furmaa daaqad cusub) (ZDR).

Helitaan

Soo Saaridyo Habeysan maanta si guud ayaa looga heli karaa API-ga. 

Soo Saaridyo Habeysan oo leh xusida function-ka waxaa laga heli karaa dhammaan noocyada taageera xusida function-ka ee API-ga. Tan waxaa ku jira noocyadeenna ugu cusub (
gpt-4o, gpt-4o-mini), dhammaan noocyada ka dambeeya oo ay ku jiraan gpt-4-0613 iyo gpt-3.5-turbo-0613, iyo nooc kasta oo fine-tuned ah oo taageera xusida function-ka. Shaqeyntan waxaa laga heli karaa API-ga dhammeystirka wada-sheekeysiga, Assistants API, iyo Batch API. Soo Saaridyo Habeysan oo leh xusida function-ka sidoo kale waxay la jaanqaadaan gelinnada aragga.

Soo Saaridyo Habeysan oo leh qaababka jawaabta waxaa laga heli karaa
gpt-4o-mini iyo gpt-4o-2024-08-06 iyo fine-tunes kasta oo ku saleysan noocyadan. Shaqeyntan waxaa laga heli karaa API-ga dhammeystirka wada-sheekeysiga, Assistants API, iyo Batch API. Soo Saaridyo Habeysan oo leh qaababka jawaabta sidoo kale waxay la jaanqaadaan gelinnada aragga. 

Marka ay u wareegaan
gpt-4o-2024-08-06 cusub, horumariyayaashu waxay 50% ka badbaadinayaan gelinnada ($2.50/1M input tokens) iyo 33% soo saaridda ($10.00/1M output tokens) marka loo barbardhigo gpt-4o-2024-05-13.

Si aad u bilowdo isticmaalka Soo Saaridyo Habeysan, eeg
dukumentiyadeenna(ku furmaa daaqad cusub)

Mahadcelin

Soo Saaridyo Habeysan waxa ay dhiirrigelin ka qaadataa shaqo heer sare ah oo ka timid bulshada open source: gaar ahaan maktabadaha outlines(ku furmaa daaqad cusub), jsonformer(ku furmaa daaqad cusub), instructor(ku furmaa daaqad cusub), guidance(ku furmaa daaqad cusub), iyo lark(ku furmaa daaqad cusub).

Qoraa

Michelle Pokrass

Ka-qaybqaatayaasha muhiimka ah

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

Mahadcelin

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