Source: https://ailoot.ai/models/ms/chat-latest/
Canonical: https://ailoot.ai/models/ms/chat-latest/
Language: ms

# OpenAI: GPT Chat Latest

[Markdown](https://ailoot.ai/models/ms/chat-latest/index.md) · [JSON](https://ailoot.ai/models/ms/chat-latest/facts.json)

## [OpenAI: GPT Chat Latest](https://ailoot.ai/models/ms/chat-latest/)

Pilihan sembang Instant OpenAI yang dikemas kini secara berkala untuk perbualan tentang teks dan imej. Berikan draf, soalan atau contoh visual, kemudian perhalus penerangan, petikan yang disunting atau respons ringkas yang terhasil melalui dialog.

- [**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `chat-latest`](https://ailoot.ai/models/ms/chat-latest/#method-0)
- [**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `chat-latest`](https://ailoot.ai/models/ms/chat-latest/#method-1)

Tentang model

Huraian ini merangkumi keupayaan model. Input, output dan pilihan yang tersedia di Ailoot disenaraikan di bawah untuk kaedah yang dipilih.

GPT Chat Latest merujuk kepada pilihan model Instant yang dikemas kini secara berkala dan didokumenkan OpenAI sebagai Chat Latest, yang menunjuk kepada model Instant terkini dalam ChatGPT. Model ini menerima teks dan imej serta menghasilkan teks. Nama yang berubah mengikut kemas kini ini menerangkan pilihan sembang yang model asasnya dikemas kini, bukannya edisi model bertarikh.

Perbualan yang berguna bermula dengan kerja yang konkrit. Berikan draf dan pembaca sasaran, minta penerangan yang lebih jelas tentang sesuatu petikan atau berikan tangkapan skrin bersama soalan tentang elemen tertentu. Contoh tugas penyuntingan ialah menukar penerangan kasar kepada mesej ringkas untuk rakan sekerja sambil mengekalkan nama dan fakta yang diperlukan. Pada giliran seterusnya, kenal pasti petikan yang perlu diubah dan sebab perubahan, seperti nada, panjang atau penerangan yang masih tiada.

Untuk dialog berasaskan imej, pastikan bukti visual boleh dibaca dan nyatakan tujuannya. Tangkapan skrin boleh menyokong soalan tentang keadaan antara muka yang kelihatan; rajah boleh menyokong permintaan untuk menerangkan hubungan. Sertakan konteks bertulis yang tidak diberikan oleh imej sahaja. Minta pemerhatian yang berkaitan dan penerangan yang berhubung dengan soalan anda, bukannya huraian setiap butiran yang kelihatan.

Spesifikasi Chat Latest OpenAI semasa memberikan tetingkap konteks 400,000 token, input maksimum 272,000 token dan output maksimum 128,000 token. Had pengetahuan yang didokumenkan ialah 20 April 2026. Ini ialah ciri pilihan sembang yang diterbitkan, manakala model asasnya dikemas kini secara berkala. Rancang bahan dan jawapan yang diminta berdasarkan had konteks serta output yang relevan, dan simpan fakta penting yang diperlukan untuk susulan.

Pengeluar menyenaraikan penstriman, Structured Outputs, panggilan fungsi dan input imej, dengan antara muka Responses dan Chat Completions. Alat yang didokumenkan merangkumi carian web dan fail, penjanaan imej, pentafsiran kod serta sambungan MCP. Respons berstruktur menetapkan bentuk maklumat yang dipulangkan; permintaan alat menamakan operasi yang berasingan. Aplikasi menyediakan operasinya, memulangkan hasil alat sebenar dan menentukan cara teks atau artifak lain yang terhasil dipersembahkan kepada pengguna.

Takrifkan hasil yang dikehendaki daripada perbualan: balasan, bahagian dokumen yang ditulis semula, penerangan tentang contoh visual atau senarai tindakan. Untuk tugas berstruktur, namakan medan dan nyatakan cara maklumat yang tiada harus dikendalikan. Untuk tugas penyuntingan, kenal pasti khalayak, fakta yang diperlukan dan nada yang sesuai. Respons akhir yang berguna ialah versi khusus yang boleh disemak terhadap bahan sumber; mesej seterusnya boleh memperhalus butiran tertentu sambil mengekalkan tujuan tugas dengan jelas.

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions` `chat-latest`

[`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=chat)

OpenAI /`chat-latest`

### Pengenalan

Pilihan sembang Instant OpenAI yang dikemas kini secara berkala untuk perbualan tentang teks dan imej. Berikan draf, soalan atau contoh visual, kemudian perhalus penerangan, petikan yang disunting atau respons ringkas yang terhasil melalui dialog.

Input yang diterima

Teks

Hasil

Teks

### Tersedia di Ailoot · input & kaedah

**Ailoot Ultra · OpenAI Chat** `POST /v1/chat/completions`

Input

`text`

Output

`text`

Format output

json atau SSE

| Medan | Jenis | Keperluan | Nilai & had | Lalai |
| --- | --- | --- | --- | --- |
| Medan`model` | Jenis`string` | KeperluanDiperlukan | Nilai & had chat-latest | Lalai— |
| Medan`messages` | Jenis`message[]` | KeperluanDiperlukan | Nilai & had Item minimum: 1 | Lalai— |
| Medan`messages[].role` | Jenis`string` | KeperluanDiperlukan | Nilai & had Bergantung pada model | Lalai— |
| Medan`messages[].content` | Jenis`string` | KeperluanPilihan | Nilai & had Terpakai apabila: Perbualan teks | Lalai— |
| Medan`stream` | Jenis`boolean` | KeperluanPilihan | Nilai & had | Lalaifalse |

Gabungan bahan input

**Teks** · Teks UTF8

`messages[].content`

Parameter kaedah dan kitar hayat

| Parameter | Kontrak |
| --- | --- |
| Parameter`content_type` | Kontrakapplication/json |
| Parameter`required` | Kontrakmodel, messages |
| Parameter`material_types` | Kontraktext |
| Parameter`messages` | Kontraktatasusunan mesej dengan struktur role/content |
| Parameter`file_material` | Kontrakdokumen UTF-8 sebenar dimasukkan sebagai teks literal; ID fail tidak diandaikan |
| Parameter`optional_controls` | Kontrakstream |
| Parameter`control_scope` | KontrakPerbualan teks; stream ialah nilai boolean dengan false sebagai lalai. |
| Parameter`output_modalities` | Kontraktext |
| Parameter`hosted_operations` | Kontrakfalse |
| Parameter`multimodal_input_binding` | Kontraknull |

Alias kaedah: `/chat/completions`

Kitar hayat: `synchronous_or_streamed`

Hantar ID model yang tepat bersama messages.

Panjang konteks bukan had output.

Fail teks boleh membekalkan teks literal; input imej/audio/objek fail memerlukan pengikatan tepat.

### Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas

Tidak dinyatakan Apabila mod pantas dipilih

Mod flex

Tidak dinyatakan Apabila mod flex dipilih

Usaha penaakulan maksimum

Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default

#### Kadar Ailoot

#### Harga mengikut konfigurasi

| Konfigurasi | Jadual kadar | Caj |
| --- | --- | --- |
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Caj Input · Token input **$0.01** / 1K token Output · Token output **$0.06** / 1K token Input · Bacaan cache **$0.001** / 1K token Input · Penulisan cache **$0** / 1K token Input · Penulisan cache, 1 jam **—** / 1K token |

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. [Cara rizab dan penyelesaian caj berfungsi →](https://ailoot.ai/docs/ms/billing/reserve/)

### Contoh permintaan

#### Ailoot Ultra · OpenAI Chat

curlPython SDK

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model":"chat-latest","messages":[{"role":"user","content":"hello"}],"stream":false}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/chat/completions \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
r=json.loads(Path("result.json").read_text())
for x in r.get("choices",[]):
    if x.get("message",{}).get("content"): print(x["message"]["content"])
PY_RESULT
```

```python
from openai import OpenAI
import os

if not os.environ.get("AILOOT_API_KEY", "").strip(): raise SystemExit("Set AILOOT_API_KEY before making a request")
client=OpenAI(base_url="https://api.ailoot.ai/v1",api_key=os.environ["AILOOT_API_KEY"],max_retries=0)
result=client.chat.completions.create(model="chat-latest", messages=[{"role":"user","content":"hello"}], stream=False)
import base64, json
from pathlib import Path

def save_result(data, stem="result"):
    # Keep every field, including usage, IDs, reasoning and tool requests.
    Path(stem + ".json").write_text(json.dumps(data, ensure_ascii=False, indent=2), encoding="utf-8")
    print(json.dumps(data, ensure_ascii=False, indent=2))
    def save_blob(encoded, suffix, label):
        raw = base64.b64decode(encoded, altchars=b"-_", validate=True)
        ext = "png" if raw.startswith(b"\x89PNG\r\n\x1a\n") else "jpg" if raw.startswith(b"\xff\xd8") else "webp" if raw[:4] == b"RIFF" and raw[8:12] == b"WEBP" else suffix
        file = Path(stem + "-" + label + "." + ext)
        file.write_bytes(raw)
        print("Saved", file)
    for index, block in enumerate(data.get("content") or []):
        print("Content", index, json.dumps(block, ensure_ascii=False))
    for choice in data.get("choices") or []:
        print("Choice", choice.get("index"), json.dumps(choice.get("message", choice.get("delta", {})), ensure_ascii=False))
    for index, item in enumerate(data.get("output") or []):
        print("Output", index, json.dumps(item, ensure_ascii=False))
        if item.get("type") == "image_generation_call" and item.get("result"):
            save_blob(item["result"], item.get("output_format") or "bin", "output-" + str(index))
    for ci, candidate in enumerate(data.get("candidates") or []):
        for pi, part in enumerate((candidate.get("content") or {}).get("parts") or []):
            print("Candidate/part", ci, pi, json.dumps(part, ensure_ascii=False))
            blob = part.get("inlineData") or part.get("inline_data")
            if blob and blob.get("data"):
                mime = blob.get("mimeType") or blob.get("mime_type")
                suffix = {"image/png":"png", "image/jpeg":"jpg", "image/webp":"webp", "audio/wav":"wav", "audio/mpeg":"mp3", "video/mp4":"mp4"}.get(mime, "bin")
                save_blob(blob["data"], suffix, "candidate-" + str(ci) + "-part-" + str(pi))

save_result(result.to_dict(mode="json"))
```

### Terima dan simpan hasil

#### Ailoot Ultra · OpenAI Chat

json atau SSE

##### Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan setiap pilihan jawapan bersama kandungan, panggilan alat dan penaakulannya. Dalam SSE, gabungkan delta mengikut indeks pilihan jawapan/alat dan kekalkan sebab penamatan akhir serta data penggunaan.

##### Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons

| Medan | Jenis |
| --- | --- |
| Medan`choices[].index` | Jenisinteger |
| Medan`choices[].message.content` | Jenisstring\|null |
| Medan`choices[].message.tool_calls` | Jenistool\_call\[\] |
| Medan`choices[].message.reasoning_content` | Jenisstring |
| Medan`choices[].message.reasoning_details` | Jenisobject\|array |
| Medan`choices[].finish_reason` | Jenisstring\|null |
| Medan`usage` | Jenisobject |

Ralat dan langkah seterusnya

| Respons | Syarat | Langkah seterusnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |

### Alias

#### Alias model

**Ailoot Ultra** [`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=chat)

#### Alias laluan kaedah

`/chat/completions`

#### ID pemanggil berkaitan

[`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=chat)

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages` `chat-latest`

[`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=messages)

OpenAI /`chat-latest`

### Pengenalan

Pilihan sembang Instant OpenAI yang dikemas kini secara berkala untuk perbualan tentang teks dan imej. Berikan draf, soalan atau contoh visual, kemudian perhalus penerangan, petikan yang disunting atau respons ringkas yang terhasil melalui dialog.

Input yang diterima

Teks

Hasil

json · sse

### Tersedia di Ailoot · input & kaedah

**Ailoot Ultra · Anthropic Messages** `POST /v1/messages`

Input

`text`

Output

`json`, `sse`

Format output

JSON atau SSE

| Medan | Jenis | Keperluan | Nilai & had | Lalai |
| --- | --- | --- | --- | --- |
| Medan`model` | Jenis`string` | KeperluanDiperlukan | Nilai & had chat-latest | Lalai— |
| Medan`messages` | Jenis`message[]` | KeperluanDiperlukan | Nilai & had | Lalai— |
| Medan`messages[].role` | Jenis`string` | KeperluanDiperlukan | Nilai & had user, assistant | Lalai— |
| Medan`messages[].content` | Jenis`string` | KeperluanDiperlukan | Nilai & had | Lalai— |
| Medan`max_tokens` | Jenis`integer` | KeperluanDiperlukan | Nilai & had | Lalai— |
| Medan`stream` | Jenis`boolean` | KeperluanPilihan | Nilai & had | Lalaifalse |

Gabungan bahan input

**Teks** · Teks UTF-8

`rentetan messages[].content`

Parameter kaedah dan kitar hayat

| Parameter | Kontrak |
| --- | --- |
| Parameter`content_type` | Kontrakapplication/json |
| Parameter`required` | Kontrakmodel, messages, max\_tokens |
| Parameter`optional_controls` | Kontrakstream |
| Parameter`material_types` | Kontraktext |
| Parameter`text_file_material` | KontrakBaca dokumen UTF-8 sebenar dan letakkan teksnya dalam rentetan input atau kandungan mesej yang ditunjukkan. |

Kitar hayat: `synchronous_or_streamed`

### Pelan harga

Rujukan tarif tidak menambah pilihan permintaan. Parameter yang disokong disenaraikan untuk kaedah yang dipilih.

Mod pantas

Tidak dinyatakan Apabila mod pantas dipilih

Mod flex

Tidak dinyatakan Apabila mod flex dipilih

Usaha penaakulan maksimum

Tidak dinyatakan Apabila usaha penaakulan maksimum menggunakan pelarasan default

#### Kadar Ailoot

#### Harga mengikut konfigurasi

| Konfigurasi | Jadual kadar | Caj |
| --- | --- | --- |
| KonfigurasiKadar asas token | Jadual kadarKadar asas | Caj Input · Token input **$0.01** / 1K token Output · Token output **$0.06** / 1K token Input · Bacaan cache **$0.001** / 1K token Input · Penulisan cache **$0** / 1K token Input · Penulisan cache, 1 jam **—** / 1K token |

Ailoot merizabkan anggaran amaun sebelum permintaan. Selepas hasil diterima, caj akhir diselesaikan berdasarkan penggunaan terukur. Penyelesaian caj penstriman menggunakan rekod penggunaan akhir. [Cara rizab dan penyelesaian caj berfungsi →](https://ailoot.ai/docs/ms/billing/reserve/)

### Contoh permintaan

#### Ailoot Ultra · Anthropic Messages

Badan JSON minimum yang lengkapcurl · gunakan dokumen UTF-8 andaPython · simpan hasil lengkap

```json
{
  "model": "chat-latest",
  "max_tokens": 128,
  "messages": [
    {
      "role": "user",
      "content": "Summarize the incident report."
    }
  ],
  "stream": false
}
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_TEXT_FILE:?Set your actual UTF-8 document}"
export AILOOT_TEXT_FILE
python3 - <<'PY_REQUEST'
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'chat-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
Path('request.json').write_text(json.dumps(payload, ensure_ascii=False), encoding='utf-8')
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/messages \
  -H "x-api-key: $AILOOT_API_KEY" -H 'anthropic-version: 2023-06-01' -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
PY_RESULT
```

```python
import json, os
from pathlib import Path

source_file = Path(os.environ['AILOOT_TEXT_FILE'])
if not source_file.is_file():
    raise SystemExit('Set AILOOT_TEXT_FILE to your actual UTF-8 document')
text = source_file.read_text(encoding='utf-8')
if not text.strip():
    raise SystemExit('Choose a document containing text')
payload = {'model': 'chat-latest', 'max_tokens': 128, 'messages': [{'role': 'user', 'content': 'Summarize the incident report.'}]}
payload['messages'][0]['content'] = 'Summarize this material and quote supporting source passages.\n\n' + text
from urllib.request import Request, urlopen
from urllib.error import HTTPError

api_key = os.environ['AILOOT_API_KEY']
if not api_key.strip():
    raise SystemExit('Set AILOOT_API_KEY before making a request')
headers = {'x-api-key': 'PLACEHOLDER_KEY', 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json'}
headers['x-api-key'] = api_key
request = Request('https://api.ailoot.ai/v1/messages', data=json.dumps(payload, ensure_ascii=False).encode('utf-8'), headers=headers, method='POST')
try:
    with urlopen(request, timeout=120) as response:
        raw = response.read()
        Path('response-headers.txt').write_text(str(response.headers), encoding='utf-8')
except HTTPError as error:
    Path('result.json').write_bytes(error.read())
    Path('response-headers.txt').write_text(str(error.headers), encoding='utf-8')
    raise
Path('result.json').write_bytes(raw)
import json
from pathlib import Path

result = json.loads(Path('result.json').read_text(encoding='utf-8'))
print(json.dumps(result, ensure_ascii=False, indent=2))
```

### Terima dan simpan hasil

#### Ailoot Ultra · Anthropic Messages

JSON atau SSE

##### Simpan semua hasil yang selesai

Simpan setiap respons lengkap, fail dan bahagian kandungan yang dikembalikan.

Kekalkan semua blok kandungan, tandatangan penaakulan dan ID penggunaan alat sebenar. Gabungkan semua delta blok SSE; blok teks pertama bukan keseluruhan output.

##### Jika respons asal perlu disemak

Kekalkan ID permintaan/respons dan pengepala. Tiada URL umum bagi pengambilan tugas teks dibekalkan.

Medan respons

| Medan | Jenis |
| --- | --- |
| Medan`id` | Jenisstring |
| Medan`model` | Jenisstring |
| Medan`content[]` | Jenistext\|thinking\|tool\_use\|other content block |
| Medan`stop_reason` | Jenisstring\|null |
| Medan`usage` | Jenisobject |

Ralat dan langkah seterusnya

| Respons | Syarat | Langkah seterusnya |
| --- | --- | --- |
| Respons400 · `invalid_request_error` | SyaratMedan wajib, perwakilan bahan atau nilai parameter tidak sah | Langkah seterusnyaBetulkan medan yang ditunjukkan sebelum permintaan penciptaan baharu. |

### Alias

#### Alias model

**Ailoot Ultra** [`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=messages)

#### Alias laluan kaedah

`/chat/completions`

#### ID pemanggil berkaitan

[`chat-latest`](https://ailoot.ai/models/ms/#m=chat-latest&route=Ultra&caller=chat-latest&fmt=messages)

FAQ · OpenAI: GPT Chat Latest

Apakah input dan hasil yang tersedia?

`POST /v1/chat/completions` · `chat-latest`: `text` → `text` `POST /v1/messages` · `chat-latest`: `text` → `json`, `sse`

Apakah medan yang digunakan oleh permintaan?

`POST /v1/chat/completions` · `chat-latest`: `model`, `messages`, `stream` `POST /v1/messages` · `chat-latest`: `model`, `messages`, `max_tokens`, `stream`

Apakah had yang terpakai?

`POST /v1/chat/completions` · `chat-latest`: `messages.min_items`: `1`

Sambungkan Ailoot kepada Claude Code, OpenCode, Hermes atau aplikasi anda.

## Syarikat dan portfolio projeknya

Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.

## Beli token dengan diskaun.

Diskaun langganan untuk penggunaan berkala. Kod promosi — sehingga 50% bagi pembelian token.

Langganan

Pilih pelan berdiskaun untuk permintaan berkala anda.

Kod promosi sehingga 50%

Masukkan kod semasa pembelian. Harga dikira semula mengikut promosi semasa.

Perbelanjaan dalam sejarah

Model, token dan jumlah disimpan bagi setiap permintaan.

[Pilih langganan](https://ailoot.ai/docs/ms/billing/subscriptions/) · [Lihat harga model](https://ailoot.ai/models/ms/)

## Sambungkan API kepada produk yang anda jual.

SaaS, aplikasi dan bot — di bawah tawaran rasmi serta perjanjian lesen Ailoot. Untuk jualan semula, mohon lesen penjual semula.

Aplikasi komersial

Tambahkan penjanaan teks, imej, video dan audio pada ciri berbayar perkhidmatan anda.

Lesen penjual semula

Hantar keterangan projek dan susunan akses. Minta terma penggunaan serta jualan semula secara bertulis.

Dokumen pada laman

Tawaran, perjanjian lesen dan dasar pemprosesan data tersedia sebelum sambungan.

[Mohon lesen penjual semula](mailto:support@ailoot.ai) · [Tawaran dan perjanjian lesen](https://ailoot.ai/legal/offer?lang=ms)

## Ailoot · Syarikat dan portfolio projeknya





Ailoot berteraskan pengalaman operasi yang mantap, pangkalan pelanggan yang besar, perkhidmatan yang stabil dan pemantauan KPI berterusan.





Syarikat dan portfolio projeknya: jutaan pelanggan; jualan bernilai berbilion setiap bulan.





Ailoot menggunakan pengalaman operasi ini untuk akses API kepada ciri AI dalam produk pelanggan, ejen, aplikasi dan automasi.
