Rumah  >  Artikel  >  Peranti teknologi  >  Apa yang berlaku apabila TS bertemu AI?

Apa yang berlaku apabila TS bertemu AI?

王林
王林ke hadapan
2023-06-27 21:51:48783semak imbas

Kecerdasan buatan berkembang setiap hari sekarang, dan model bahasa yang besar menjadi semakin berkuasa. Dengan menggunakan alatan AI, kecekapan kerja telah dipertingkatkan dengan ketara Anda hanya perlu memasukkan beberapa aksara dan tekan kekunci Tab, dan kod akan dilengkapkan secara automatik.

Apa yang berlaku apabila TS bertemu AI?

Selain pelengkapan kod, kami juga boleh membenarkan AI membantu kami mengautomasikan fungsi dan mengembalikan data JSON yang diperlukan.

Mula-mula mari kita lihat contoh:

// index.tsinterface Height {meters: number;feet: number;}interface Mountain {name: string;height: Height;}// @ts-ignore// @magicasync function getHighestMountain(): Promise<mountain> {// Return the highest mountain}(async () => {console.log(await getHighestMountain());})();</mountain>

Dalam kod di atas, kami mentakrifkan fungsi tak segerak getHighestMountain untuk mendapatkan maklumat puncak tertinggi di dunia, dan nilai pulangannya ialah struktur data yang ditakrifkan oleh antara muka Mountain. Tiada pelaksanaan khusus di dalam fungsi, kami hanya menerangkan perkara yang perlu dilakukan oleh fungsi melalui ulasan.

Selepas menyusun dan melaksanakan kod di atas, konsol akan mengeluarkan keputusan berikut:

{ name: 'Mount Everest', height: { meters: 8848, feet: 29029 } }

Gunung tertinggi di dunia ialah Gunung Everest, yang merupakan puncak utama Himalaya dan puncak tertinggi di dunia , dengan ketinggian 8848.86 meter sangat tinggi?

Seterusnya, saya akan dedahkan rahsia fungsi getHighestMountain.

Untuk memahami perkara yang dilakukan di dalam fungsi asynchronous getHighestMountain, mari kita lihat kod JS yang disusun:

const { fetchCompletion } = require("@jumploops/magic");// @ts-ignore// @magicfunction getHighestMountain() {return __awaiter(this, void 0, void 0, function* () {return yield fetchCompletion("{\n// Return the highest mountain\n}", {schema: "{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"height\":{\"$ref\":\"#/definitions/Height\"}},\"required\":[\"height\",\"name\"],\"definitions\":{\"Height\":{\"type\":\"object\",\"properties\":{\"meters\":{\"type\":\"number\"},\"feet\":{\"type\":\"number\"}},\"required\":[\"feet\",\"meters\"]}},\"$schema\":\"http://json-schema.org/draft-07/schema#\"}"});});}

Seperti yang dapat dilihat dari kod di atas, fungsi fetchCompletion dalam @jumpic perpustakaan digunakan dalam fungsi getHighestMountain.

Daripada parameter fungsi ini, kita melihat anotasi fungsi fungsi TS sebelumnya Selain itu, kita juga melihat objek yang mengandungi atribut skema. Nilai atribut ini ialah objek Skema JSON yang sepadan dengan antara muka Mountain..

Seterusnya kita fokus pada menganalisis fungsi fetchCompletion dalam perpustakaan @jumploops/magic. Fungsi ditakrifkan dalam fail fetchCompletion.ts, dan aliran pemprosesan dalamannya dibahagikan kepada tiga langkah

  • Petua yang diperlukan untuk memasang API Penyelesaian Sembang
  • Panggil API Selesai Sembang untuk mendapatkan hasil jawapan;
  • Parse Respon kepada keputusan dan sahkan objek respons menggunakan skema JSON.
// fetchCompletion.tsexport async function fetchCompletion(existingFunction: string, { schema }: { schema: any }) {let completion;// (1)const prompt = `You are a robotic assistant. Your only language is code. You only respond with valid JSON. Nothing but JSON.  For example, if you're planning to return:{ "list": [ { "name": "Alice" }, { "name": "Bob" }, { "name": "Carol"}] } Instead just return:[ { "name": "Alice" }, { "name": "Bob" }, { "name": "Carol"}]...Prompt: ${existingFunction.replace('{', '') .replace('}', '').replace('//', '').replace('\n', '')}JSON Schema: \`\`\`${JSON.stringify(JSON.parse(schema), null, 2)}\`\`\``;// (2)try {completion = await openai.createChatCompletion({model: process.env.OPENAI_MODEL ? process.env.OPENAI_MODEL : 'gpt-3.5-turbo',messages: [{ role: 'user', content: prompt }],});} catch (err) {console.error(err);return;}const response = JSON.parse(completion.data.choices[0].message.content);// (3)if (!validateAPIResponse(response, JSON.parse(schema))) {throw new Error("Invalid JSON response from LLM");}return JSON.parse(completion.data.choices[0].message.content);}

Dalam Prompt, kami menyediakan peranan untuk AI dan menyediakan beberapa contoh untuknya untuk membimbingnya mengembalikan format JSON yang sah.

Panggil API Selesai Sembang untuk mendapatkan hasil respons, dan terus gunakan API createChatCompletion yang disediakan oleh perpustakaan openai.

Selepas mendapat hasil respons, fungsi validateAPIResponse akan dipanggil untuk mengesahkan objek respons. Pelaksanaan fungsi ini juga agak mudah. Pustaka ajv digunakan secara dalaman untuk melaksanakan pengesahan objek berdasarkan Skema JSON.

export function validateAPIResponse(apiResponse: any, schema: object): boolean {const ajvInstance = new Ajv();ajvFormats(ajvInstance);const validate = ajvInstance.compile(schema);const isValid = validate(apiResponse);if (!isValid) {console.log("Validation errors:", validate.errors);}return isValid;}

Perkara seterusnya yang ingin kami analisis ialah cara menyusun kod TS ke dalam kod JS yang memanggil fungsi fetchCompletion.

perpustakaan ttypescript digunakan secara dalaman oleh @jumploops/magic yang membolehkan kami mengkonfigurasi penukar tersuai dalam fail tsconfig.json.

Di dalam pengubah, ia adalah API yang disediakan oleh skrip taip, yang digunakan untuk menghuraikan dan mengendalikan AST dan menjana kod yang dikehendaki. Ayat ini boleh ditulis semula sebagai: Terdapat tiga langkah yang membentuk aliran pemprosesan utama di dalam transformer

  • Imbas kod sumber fungsi AI yang mengandungi // @magicannotation; jenis fungsi AI Hasilkan objek JSON Schema yang sepadan;
  • Ekstrak anotasi fungsi daripada badan fungsi AI dan jana kod untuk memanggil fungsi fetchCompletion.
  • Tumpuan artikel ini bukan pada memanipulasi objek AST yang dijana oleh pengkompil TypeScript. Baca fail transformer.ts dalam projek @jumploops/magic jika anda berminat. Jika anda ingin mengalami sendiri fungsi AI, anda boleh merujuk kepada konfigurasi package.json dan tsconfig.json dalam contoh dalam artikel ini. . Dalam amalan, logik pengendalian pengecualian yang sesuai perlu ditambah.

Pada masa ini pustaka @jumploops/magic tidak menyokong parameter fungsi tetapan dan hanya menyediakan contoh mudah. Dokumentasi tentang keupayaan kecerdasan buatan dalam perpustakaan Marvin tersedia untuk anda baca tentang bahagian ini.

Jika model bahasa yang besar boleh mengeluarkan data berstruktur secara terkawal mengikut keperluan kami. Kemudian kita boleh melakukan banyak perkara.

Pada masa ini, banyak platform kod rendah atau platform RPA (Robotic Process Automation) boleh mendapatkan objek Skema JSON yang sepadan.

Dengan penyelesaian daripada @jumploops/magic, kami boleh menjadikan platform kod rendah atau platform RPA lebih pintar. Sebagai contoh, cepat buat halaman borang atau siarkan pelbagai tugasan dalam bahasa semula jadi.

Akhir sekali, mari kita ringkaskan kerja di sebalik pustaka @jumploops/magic, yang menggunakan penukar TypeScript untuk mendapatkan jenis pemulangan fungsi, menukar jenis kepada objek Skema JSON, dan kemudian menggantikan kod sumber fungsi yang mengandungi // Badan anotasi @magic, kemudian memanggil API penyelesaian sembang dan mengesahkan respons terhadap skema JSON.

Ini adalah penghujung artikel hari ini, saya harap ia akan membantu anda.

Atas ialah kandungan terperinci Apa yang berlaku apabila TS bertemu AI?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam