精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

當TS遇上AI,會發生什么?

人工智能
人工智能現在每天都在發展,大型語言模型變得越來越強大。工作中使用AI工具幫忙,將大大提高了工作效率,只需敲幾個字符,按Tab鍵,代碼就智能完成。

人工智能現在每天都在發展,大型語言模型變得越來越強大。工作中使用AI工具幫忙,將大大提高了工作效率,只需敲幾個字符,按Tab鍵,代碼就智能完成。

除了代碼補全之外,我們還可以讓AI幫助我們自動化功能并返回所需的JSON數據。

先讓我們看一個例子:

// index.ts
interface Height {
  meters: number;
  feet: number;
}


interface Mountain {
  name: string;
  height: Height;
}


// @ts-ignore
// @magic
async function getHighestMountain(): Promise<Mountain> {
  // Return the highest mountain
}


(async () => {
  console.log(await getHighestMountain());
})();

在上面的代碼中,我們定義了一個 getHighestMountain 異步函數來獲取世界上最高峰的信息,它的返回值是 Mountain 接口定義的數據結構。函數內部沒有具體的實現,我們只是通過注釋描述函數需要做什么。

編譯并執行上述代碼后,控制臺會輸出如下結果:

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

世界最高的山峰是珠穆朗瑪峰,它是喜馬拉雅山脈的主峰,也是世界最高峰,海拔8848.86米,是不是很神奇?

接下來我就來揭秘getHighestMountain函數的秘密。

為了了解 getHighestMountain 異步函數內部做了什么,我們看一下編譯后的 JS 代碼:

const { fetchCompletion } = require("@jumploops/magic");


// @ts-ignore
// @magic
function 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#\"}"
        });
    });
}

從上面的代碼可以看出,@jumploops/magic 庫中的 fetchCompletion 函數在 getHighestMountain 函數內部被調用。

從這個函數的參數中,我們看到了之前TS函數的函數注釋,此外,我們還看到了一個包含schema屬性的對象。該屬性的值為Mountain接口對應的JSON Schema對象。

接下來我們重點分析@jumploops/magic庫中的fetchCompletion函數。該函數定義在fetchCompletion.ts文件中,其內部處理流程分為3步:

  • 組裝 Chat Completions API 所需的提示;
  • 調用Chat Completions API獲取響應結果;
  • 解析響應結果并使用 JSON 模式驗證響應對象。
// fetchCompletion.ts
export 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);
}

在Prompt中,我們為AI設置了角色,并為它準備了一些例子來引導它返回有效的JSON格式。

調用Chat Completions API獲取響應結果,直接使用openai庫提供的createChatCompletion API。

解析得到響應結果后,會調用validateAPIResponse函數對響應對象進行驗證。這個功能的實現也比較簡單。內部使用ajv庫實現基于JSON Schema的對象校驗。

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;
}

接下來我們要分析的是如何將TS代碼編譯成調用fetchCompletion函數的JS代碼。

ttypescript 庫在@jumploops/magic 內部使用,它允許我們在 tsconfig.json 文件中配置自定義轉換器。

在transformer內部,是typescript提供的API,用于解析和操作AST,生成想要的代碼。transformer內部的主要處理流程也可以分為3個步驟:

  • 掃描包含 // @magicannotation; 的 AI 函數的源代碼;
  • 根據AI函數的返回值類型生成對應的JSON Schema對象;
  • 從AI函數體中提取函數注解,生成調用fetchCompletion函數的代碼。

本文的重點不在于如何解析和操作 TypeScript 編譯器生成的 AST 對象。如果你有興趣,可以閱讀@jumploops/magic 項目中的transformer.ts 文件。如果您想親自體驗AI功能,可以參考本文示例中package.json和tsconfig.json的配置。

package.json

{
  "name": "magic",
  "scripts": {
    "start": "ttsc && cross-env OPENAI_API_KEY=sk-*** node src/index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@jumploops/magic": "^0.0.6",
    "cross-env": "^7.0.3",
    "ts-patch": "^3.0.0",
    "ttypescript": "^1.5.15",
    "typescript": "4.8.2"
  }
}

tsconfig.json文件

{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "esModuleInterop": true,
    "allowSyntheticDefaultImports": true,
    "strict": true,
    "skipLibCheck": true,
    "plugins": [{ "transform": "@jumploops/magic" }]
  },
  "include": ["src/**/*.ts"],
  "exclude": [ "node_modules"],
}

請注意,聊天完成 API 并不總是以我們期望的格式返回有效的 JSON 對象,因此您在實踐中需要添加適當的異常處理邏輯。

目前@jumploops/magic庫只提供了簡單的示例,尚不支持設置函數的參數。對于這一部分,您可以閱讀 Marvin 庫中有關 AI Functions 的文檔。

如果大語言模型能夠按照我們的要求可控地輸出結構化數據。那么我們可以做很多事情。

目前很多低代碼平臺或者RPA(Robotic Process Automation)平臺都可以獲取對應的JSON Schema對象。

借助 @jumploops/magic 的解決方案,我們可以使低代碼平臺或 RPA 平臺變得更加智能。例如,快速創建表單頁面或以自然語言的形式發布各種任務。

最后,我們來總結一下 @jumploops/magic 庫背后的工作,它使用 TypeScript 轉換器獲取函數的返回類型,將類型轉換為 JSON Schema 對象,然后替換包含 // @magic 注釋函數的源代碼 函數的主體,然后調用聊天完成 API 并根據 JSON 架構驗證響應。

到這里,今天的這篇文章內容就結束了,希望對你有所幫助。

責任編輯:華軒 來源: web前端開發
相關推薦

2019-03-14 11:00:40

GoLua語言

2018-06-06 00:26:20

SDN5G無線網絡

2018-03-23 04:58:16

區塊鏈物聯網互聯網

2025-11-18 07:00:00

AI戰略自動化自主式AI

2018-03-16 12:43:38

物聯網智慧城市智能

2017-04-07 15:57:20

人工智能放射科診斷

2017-04-05 09:50:50

人工智能醫生

2011-10-11 15:42:54

大數據數據庫

2015-11-19 00:11:12

2023-04-27 07:40:08

Spring框架OpenAI

2024-02-29 16:51:36

GenAI運營供應鏈

2015-08-18 09:09:46

WiFiO2O

2024-04-02 11:31:33

USBAndroid

2021-12-27 08:24:08

漏洞網絡安全

2021-08-19 17:27:41

IT數據中心災難

2021-07-13 09:29:03

5G網絡IaaS云計算

2023-08-26 07:44:13

系統內存虛擬

2018-04-12 20:19:19

無線網絡人工智能機器學習

2021-09-08 15:02:28

人工智能AIRFID

2021-03-10 10:40:04

Redis命令Linux
點贊
收藏

51CTO技術棧公眾號

亚洲免费中文字幕| 色综合久久久久综合体桃花网| 91免费精品国偷自产在线| 四虎免费在线视频| 欧美美女在线直播| 欧美日韩一区中文字幕| 国产黄色激情视频| 国产免费av高清在线| 你懂的视频在线免费| 亚洲毛片在线| 日韩在线免费av| 91视频在线免费| 国产精品麻豆成人av电影艾秋| 亚洲永久精品国产| 日韩久久不卡| 人妻一区二区三区免费| 免费黄网站欧美| 久久久久久亚洲精品| 日韩av片在线| 日韩极品在线| 日韩免费观看高清完整版| 熟妇人妻va精品中文字幕 | 久久久久国色av免费看影院| 成人黄色av网站| 国产一级一级国产| 伊人久久久大香线蕉综合直播| 日韩在线免费高清视频| 亚洲蜜桃精久久久久久久久久久久| 4438五月综合| 91国产成人在线| 日韩国产一级片| 菠萝菠萝蜜在线观看| 欧美国产精品一区二区| 精品蜜桃传媒| 亚洲AV午夜精品| 久久99精品国产.久久久久久| 欧日韩不卡在线视频| 久草视频精品在线| 欧美激情视频一区二区三区在线播放 | 91精品国产91久久久久| 欧美性猛交xxxxx少妇| 日韩综合一区| 亚洲一区二区精品| wwwwxxxx国产| 亚洲8888| 亚洲美女在线视频| 在线免费观看日韩av| 另类尿喷潮videofree| 精品国产一区二区在线观看| 一级黄色大片儿| 国产精品亚洲一区二区在线观看| 欧美日韩国产一级| 国产欧美激情视频| 电影91久久久| 欧美精品tushy高清| 99sesese| 曰本一区二区| 日韩欧美国产小视频| 亚洲女人在线观看| 欧美黄色一级| 欧美xxxx在线观看| 国产xxxx视频| 亚洲aaa级| 尤物九九久久国产精品的分类| 国产真实乱人偷精品人妻| 国产亚洲精品美女久久久久久久久久| 亚洲欧美日韩爽爽影院| 亚洲最大成人网站| 成人情趣视频网站| 超碰91人人草人人干| 国产精品九九九九九九| 欧美久色视频| 97超级碰碰人国产在线观看| 成人公开免费视频| 麻豆成人91精品二区三区| 91精品国产综合久久香蕉922| 国产精品久久久久久免费播放| 久久99久久精品| 91丝袜脚交足在线播放| 日本毛片在线观看| 国产欧美日韩三级| 8x8x华人在线| www.综合| 欧美午夜片在线观看| 日韩欧美中文视频| 日韩精品导航| www.欧美精品| 日本一级淫片色费放| 久久久精品午夜少妇| 成人在线精品视频| 手机av在线免费观看| 国产精品污www在线观看| 日本老太婆做爰视频| 伊人网在线播放| 欧美一区二区三区公司| 毛茸茸多毛bbb毛多视频| 日韩专区精品| 91精品国产99久久久久久| 中文字幕理论片| 高清视频一区二区| 日韩欧美一区二区在线观看| 色黄网站在线观看| 欧美视频一区二区| 最新日本中文字幕| 999久久久91| 2019av中文字幕| 国产麻豆91视频| 久久久精品国产免大香伊| 一区二区三区四区免费观看| 在线视频超级| 精品国产露脸精彩对白| 成人黄色短视频| 国产精品日本| 福利精品视频| 国产秀色在线www免费观看| 色哟哟在线观看一区二区三区| 精品人妻一区二区三区免费| 激情综合网五月| 久久人人爽人人| 精品国自产在线观看| 国产日产欧美一区| 成熟丰满熟妇高潮xxxxx视频| 精品入口麻豆88视频| 一本色道久久88精品综合| 亚洲伊人成人网| 国产91富婆露脸刺激对白| 亚洲精品一区二区毛豆| 女生影院久久| 国产视频精品久久久| 国产精品第9页| 国产成人av一区二区三区在线观看| 亚洲一区二区自拍偷拍| 亚洲欧美小说色综合小说一区| 精品国产凹凸成av人导航| 91狠狠综合久久久| 久久国产欧美日韩精品| 日韩av不卡播放| 欧美日韩大片| 日韩精品免费看| 日本在线免费观看| av亚洲精华国产精华精| 欧美极品少妇无套实战| 玖玖玖电影综合影院| 日韩在线视频一区| 一道本在线视频| 国产精品色哟哟| 一级黄色录像在线观看| 日韩精品网站| 91免费人成网站在线观看18| 免费在线观看黄色网| 欧美欧美午夜aⅴ在线观看| 亚洲一区 欧美| 麻豆91精品91久久久的内涵| 亚洲最大免费| 小说区图片区亚洲| 欧美伦理91i| 亚洲不卡免费视频| 亚洲成a人v欧美综合天堂下载 | 久久精品亚洲乱码伦伦中文| 男人的天堂99| 国产一区二区三区站长工具| 国产精品xxx视频| 午夜免费视频在线国产| 欧美疯狂性受xxxxx喷水图片| 国产suv精品一区二区68| 国产最新精品精品你懂的| 欧美一级特黄aaaaaa在线看片| 精品视频在线播放一区二区三区 | 亚洲国产天堂久久国产91| 日本熟妇一区二区| 久久精品亚洲国产奇米99| av网站在线不卡| 影音先锋日韩精品| 国产一区二区久久久| 欧洲av一区二区| 日韩在线观看高清| 六月丁香综合网| 一本到不卡免费一区二区| 俄罗斯毛片基地| 国产精品资源网| 国产精品无码av在线播放| 精品国产不卡| 99精彩视频| 2022成人影院| 不卡毛片在线看| 日韩a在线观看| 91麻豆精品国产91久久久更新时间| 国产亚洲欧美久久久久| 久久精品人人爽人人爽| 91香蕉国产线在线观看| 国产精品久久久久9999高清| 亚洲一区三区视频在线观看| 视频二区欧美| 国产成人精品一区二区| 中文字幕在线三区| 亚洲欧洲日本专区| 国产视频www| 一本一本久久a久久精品综合麻豆| 黄色片子在线观看| 久久伊人中文字幕| 能看毛片的网站| 日韩中文字幕亚洲一区二区va在线| 精品久久免费观看| 国产一区二区三区91| 不卡视频一区二区| 欧美日韩视频免费看| 欧美自拍视频在线| 黄色羞羞视频在线观看| 在线视频亚洲欧美| 男女视频在线观看免费| 日韩久久免费av| 亚洲自拍偷拍另类| 欧美性猛交xxxx乱大交| 欧美三级 欧美一级| 中文av一区特黄| 亚洲做受高潮无遮挡| 国产成人av电影在线播放| 亚洲美女爱爱视频| 久久久久久亚洲精品杨幂换脸| 妞干网视频在线观看| 欧美高清视频手机在在线| 久久青青草原一区二区| 91麻豆精品激情在线观看最新| 国产日产久久高清欧美一区| 成人教育av| 午夜精品一区二区三区在线视 | 亚洲一区二区三区爽爽爽爽爽| 国产黄色片在线| 国产视频一区在线播放| 天天躁日日躁aaaxxⅹ| 99久久久久久| 亚洲国产第一区| 成人av一区二区三区| 久久久久中文字幕亚洲精品| 国内成+人亚洲+欧美+综合在线 | a级网站在线观看| 欧美电影一区| 日韩福利视频| av亚洲在线观看| 亚洲精品高清视频| 久久综合av| 一区二区三区四区欧美日韩| 成人综合专区| 一本久久a久久精品vr综合| 日韩国产欧美| 中文字幕乱码一区二区三区| 日韩免费看片| 国产精品h视频| 亚洲乱码在线| 吴梦梦av在线| 欧美精品三级| 精品国产一区三区| 一本色道久久综合亚洲精品不| 每日在线更新av| 久久久噜噜噜| 欧美黄色性生活| 国产最新精品免费| 在线播放av网址| 91在线一区二区三区| 国产一二三四五区| 国产精品免费视频一区| 九九精品视频免费| 亚洲国产精品久久久久婷婷884| 五月天婷婷综合网| 一本色道久久综合亚洲aⅴ蜜桃| 69xxxx国产| 欧美精品一卡二卡| 亚洲精品无码久久久| 日韩精品高清在线| www.91在线| 超碰91人人草人人干| 国产盗摄——sm在线视频| 国产精品对白刺激| 91精品福利观看| 国产欧美日韩在线播放| 国产aⅴ精品一区二区三区久久| 亚洲v国产v| 欧美va天堂| 动漫av网站免费观看| 麻豆精品在线看| youjizz.com日本| 国产日韩欧美精品一区| 全网免费在线播放视频入口| 欧美午夜激情视频| 国产精品污视频| 日韩大陆毛片av| 高清全集视频免费在线| 性欧美xxxx| 亚洲一区二区三区久久久| 国产麻豆乱码精品一区二区三区| 日本成人小视频| 人妻少妇精品无码专区二区| 久久精品99国产精品日本| 国产高清成人久久| 国产精品久久夜| 日韩美女黄色片| 欧美精品乱码久久久久久| 天天干天天插天天操| 久久久精品国产一区二区| 欧美亚洲日本精品| 2019国产精品视频| 精品香蕉视频| 免费看国产曰批40分钟| 精品一区二区免费看| 青青草视频播放| 亚洲精品乱码久久久久久日本蜜臀| 久久久黄色大片| 亚洲成年人影院在线| 激情视频在线观看| 国产精品久久久久久久久借妻| 国产精品18hdxxxⅹ在线| 伊人色综合久久天天五月婷| 久久国产精品久久久久久电车| 少妇搡bbbb搡bbb搡打电话| 成人欧美一区二区三区小说| 亚洲中文字幕无码爆乳av| 亚洲成人免费网站| 污污片在线免费视频| 91精品视频免费观看| 精品久久成人| 国产第一页视频| av电影天堂一区二区在线 | 色网综合在线观看| 少妇人妻精品一区二区三区| 蜜臀久久99精品久久久久久宅男| 成人做爰免费视频免费看| 欧美精品欧美精品系列c| 亚洲久久一区| 久久久久久婷婷| 亚洲自拍欧美精品| 精品国产va久久久久久久| 久久久国产一区| 另类视频一区二区三区| 中文字幕一区二区三区精彩视频| 蜜乳av一区二区| 久久久久亚洲AV成人无在| 色婷婷久久综合| 黄色av网址在线免费观看| 国产成人精品国内自产拍免费看 | 韩国黄色一级大片| 精东粉嫩av免费一区二区三区| 男人晚上看的视频| 欧美高清性hdvideosex| 麻豆tv入口在线看| 91久久久久久久久久久久久| 99精品一区| 中文字幕丰满乱码| 中文字幕综合网| www.亚洲黄色| 久久久久免费视频| 国产亚洲成av人片在线观黄桃| 日韩日韩日韩日韩日韩| 99久久久久久| 国产成人无码专区| 日韩小视频在线观看| 国产精品视频一区视频二区| www.日本三级| 91网上在线视频| 久久久久久亚洲av无码专区| 亚洲天堂男人天堂女人天堂| 国产欧美自拍| 国产又粗又长又爽视频| 国产成人免费网站| 亚洲午夜18毛片在线看| 国产一区二区三区三区在线观看| 久久久加勒比| 日本免费成人网| 91亚洲精品乱码久久久久久蜜桃 | 日韩精品免费专区| 日韩一卡二卡在线观看| 日韩欧美久久久| 碰碰在线视频| 亚洲乱码一区二区三区| 国产成人h网站| 在线免费观看av网址| 日韩中文字幕欧美| 久草精品视频| 日本人视频jizz页码69| 亚洲伦在线观看| 视频二区在线| 成人国产在线激情| 99成人精品| 亚洲综合图片一区| 亚洲高清福利视频| 日本午夜免费一区二区| 男女激情免费视频| 国产精品欧美久久久久一区二区| www.综合色| 国产精品色悠悠| 亚洲精品激情| 99热这里只有精品4| 亚洲精品按摩视频| 日韩在线激情| 欧美在线观看成人| 亚洲女人****多毛耸耸8| 飘雪影视在线观看免费观看| 亚洲综合日韩在线| 日韩精品1区2区3区| 国产一二三四在线| 最近2019中文字幕mv免费看|