最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

微軟TypeChat 分析:可用于實現(xiàn)大語言模型的 AI Agent 游戲

2023-08-03 10:15 作者:10cl  | 我要投稿

微軟官網(wǎng)描述

本文深入介紹了微軟最近發(fā)布的 TypeChat 項目,該項目允許開發(fā)者定義大語言模型返回的響應結(jié)構(gòu)。通過分析源代碼,探討了 Prompt 的基本概念,為定制化開發(fā)互動式 AI Agent 提供便捷的解決方案。 文章著重介紹 TypeChat 的關(guān)鍵要素,例如集成不同的大語言模型、提高靈活性,并調(diào)整輸出以適應特定場景,這對于在游戲中通過 AI Agent 實現(xiàn)多樣交互至關(guān)重要。

在 TypeChat 中,先定義好 ChatGPT 的響應類型,即 Schema, 創(chuàng)建將自然語言請求翻譯為特定類型的 JSON 對象的工具函數(shù), 將函數(shù)列表和問題發(fā)送給GPT, GPT根據(jù)函數(shù)定義,返回要執(zhí)行的函數(shù)名和參數(shù), 不同于 Function calling, 它使用 Typescript 類型來作為 Schema,要求 ChatGPT 返回符合這個類型定義的數(shù)據(jù)。

因為最近開發(fā)一個基于GPT的AI AGENT的游戲,不同的人在地圖通過不斷的和chatGPT定義角色的NPC聊天交互,然后從NPC那里得到不同的反饋,得到不一樣的體驗,對于交互的部分,我覺得 tyeChat 就可以很好的交互上的格式問題。

本文對typeChat 其中比較重要的點進行分析:

  1. 大模型對接的地方:目前只是支持了兩種大模型,微軟自己的Azure的和 OpenAI 的,比如還有很多的大模型如何接入的問題

  2. 靈活性的拓展:比如說目前 typeChat 對于類型的定義過于嚴格,可能要耗費大量的token 以及對于不需要那么嚴格的場景,比如聊天,只需要有幾個關(guān)鍵的key是對的就可以了如何優(yōu)化

核心架構(gòu)

核心就是對話,校驗,修復型對話,得到想要的結(jié)構(gòu)。

createJsonTranslator 函數(shù)是核心部分,它接受三個參數(shù) model、schema 和 typeName,并返回一個包含幾個方法和屬性的對象 typeChat, 該對象用于將自然語言請求轉(zhuǎn)換為指定類型的 JSON 對象。

  • model:是用于將自然語言請求翻譯為 JSON 的大語言模型,目前是支持微軟自己的Azure 和 Openai的

  • schema:是一個包含 JSON schema 的 TypeScript 源代碼的字符串。

  • typeName:是在 schema 中指定的目標 JSON 類型的名稱。

返回的 typeChat 對象包含以下幾個屬性和方法:

  • model:保存?zhèn)魅氲恼Z言模型。

  • validator:通過調(diào)用 createJsonValidator 函數(shù),使用傳入的 schema 和 typeName 創(chuàng)建一個 JSON 校驗器,并將其保存在 validator 屬性中。

  • attemptRepair:一個布爾值,表示在校驗失敗時是否嘗試修復 JSON 對象。

  • stripNulls:一個布爾值,表示是否從最終的 JSON 對象中剝離空值(null)屬性。

  • createRequestPrompt(request):一個函數(shù),用于創(chuàng)建用戶請求的 Prompt ,包含 JSON schema 和用戶請求的內(nèi)容。

  • createRepairPrompt(validationError):一個函數(shù),檢驗格式不對的話,修復性的 Prompt ,再次請求。

  • translate(request):一個異步函數(shù),用于將用戶請求翻譯為 JSON 對象。 它使用語言模型 model 來翻譯用戶請求,并調(diào)用 JSON 校驗器進行驗證。如果驗證成功,返回驗證結(jié)果,否則根據(jù) attemptRepair 的值決定是否嘗試修復錯誤,最終返回修復后的 JSON 對象。

Prompt 的核心

這里面的核心就是對 ChatGpt 做一個角色的定義, 定義 ChatGpt 作為一個處理JSON對象的服務,在一個就是 typescript 對對象類型的定義描述給 chatGpt 識別。

當 ChatGpt 回復之后,通過 validation 校驗的類型錯誤,在給 chatGpt 說你的類型不對,具體錯誤是什么, 你需要在輸出修改后的JSON對象:

通過這樣的一次反饋得到最后需要的格式, 但是這個里面如果需要足夠的穩(wěn)定,還需要自行修改源碼添加次數(shù),以便達到自己的預期。

增加大模型接口

目前官網(wǎng)里面就支持了兩種,微軟自己的Azure的和 OpenAI 的ChatGpt,為了探索 TypeChat 核心概念與拓展性,為游戲開發(fā)定制 AI Agent 提供便利,還是需要處理這塊代碼實現(xiàn)不同大模型的對接需求:

這里是兩個模型公用的部分,基本的請求結(jié)構(gòu)差不多,定義 Prompt 和 role, 然后得到 result.data.choices[0].message?.content 返回值。 這里可以修改返回的內(nèi)容,以及在這里定義每次調(diào)用請求的大模型接口,可以通過這個地方,修改為自己定義的接口以及處理自己代碼的邏輯。


實際案例 prompt 解析

不通過 typechat, 基于 typechat的原理,你可以直接將下面的 《處理后的 prompt》直接粘貼到 chatGpt 也能得到同樣的結(jié)果。 這里就是將 typechat 內(nèi)提問的方式,通過中文的問答來實現(xiàn)的。

用戶輸入

我要兩份大的,一份加意大利辣香腸,另一份多加醬汁。意大利辣腸加羅勒醬汁加加拿大培根。再加一份沙拉。麥 我把加拿大熏肉煎成五分熟。做希臘沙拉,不要紅洋蔥。給我兩杯麥克和杰克,一杯內(nèi)華達山脈。哦,再加一份不加紅洋蔥的沙拉。

處理后的 prompt

讓 ChatGpt 為提供我們定義的 typescript 格式的 prompt為: 你是一個JSON轉(zhuǎn)換服務,根據(jù)以下TypeScript定義將用戶請求轉(zhuǎn)換為“Order”類型的JSON對象:

以下是用戶請求: """ 我要兩份大的,一份加意大利辣香腸,另一份多加醬汁。意大利辣腸加羅勒醬汁加加拿大培根。再加一份沙拉。麥 我把加拿大熏肉煎成五分熟。做希臘沙拉,不要紅洋蔥。給我兩杯麥克和杰克,一杯內(nèi)華達山脈。哦,再加一份不加紅洋蔥的沙拉。 """ 以下是轉(zhuǎn)換成JSON對象的用戶請求,其中包含2個縮進空間,沒有值為undefined的屬性:

ChatGPT 的回復

好的!以下是用戶請求轉(zhuǎn)換成的JSON對象,根據(jù)提供的TypeScript定義進行處理:

請注意,此轉(zhuǎn)換是根據(jù)提供的TypeScript定義和用戶請求進行的。用戶請求中提到的披薩配料("意大利辣香腸"、"多加醬汁"、"加拿大培根"、"羅勒醬汁")和沙拉配料("加拿大熏肉煎成五分熟"、"紅洋蔥")已添加到JSON對象中的相應披薩和沙拉項目中。披薩和沙拉的尺寸和類型也按照用戶請求進行了設置。啤酒項目也根據(jù)請求中的數(shù)量和類型進行了添加。

微軟TypeChat 分析:可用于實現(xiàn)大語言模型的 AI Agent 游戲的評論 (共 條)

分享到微博請遵守國家法律
广南县| 财经| 巫山县| 温州市| 怀集县| 禹州市| 商城县| 泗洪县| 吉安县| 山西省| 松桃| 类乌齐县| 新野县| 黑山县| 华阴市| 济源市| 肇州县| 广河县| 莱阳市| 天祝| 岳阳县| 扎赉特旗| 理塘县| 山西省| 抚远县| 余庆县| 白山市| 泸州市| 邯郸市| 茌平县| 普兰县| 大方县| 原平市| 滕州市| 广安市| 临泽县| 延庆县| 海安县| 都昌县| 平南县| 康定县|