建類型安全的自然語(yǔ)言接口)
大模型AI 應(yīng)用后端【免費(fèi)下載鏈接】TypeChatTypeChat is a library that makes it easy to build natural language interfaces using types.項(xiàng)目地址https://gitcode.com/gh_mirrors/ty/TypeChat點(diǎn)擊查看免費(fèi)下載導(dǎo)讀TypeChat 是微軟開(kāi)源的一個(gè)實(shí)驗(yàn)性庫(kù)核心思想是用類型定義而不是大段提示詞工程來(lái)約束大語(yǔ)言模型LLM的輸出——你只需用 TypeScript 類型描述應(yīng)用期望的數(shù)據(jù)結(jié)構(gòu)TypeChat 就會(huì)負(fù)責(zé)構(gòu)造提示詞、讓 LLM 返回符合結(jié)構(gòu)的 JSON、用 TypeScript 編譯器校驗(yàn)結(jié)果并在校驗(yàn)失敗時(shí)引導(dǎo)模型自我修復(fù)。讀完本文你將掌握 TypeChat 的兩種核心用法數(shù)據(jù)模式與 API 模式、完整的環(huán)境變量與配置參數(shù)以及從安裝到落地一個(gè)情感分析接口的全過(guò)程并理解其類型即模式的底層原理。為什么需要 TypeChat從自然語(yǔ)言到結(jié)構(gòu)化數(shù)據(jù)的難題過(guò)去幾個(gè)月圍繞新一代大語(yǔ)言模型的熱情集中在一個(gè)問(wèn)題上如何把這些模型真正集成進(jìn)現(xiàn)有應(yīng)用的界面聊天助手是最直接的應(yīng)用但對(duì)大多數(shù)應(yīng)用而言更關(guān)鍵的是——如何用 AI 把用戶的自然語(yǔ)言請(qǐng)求轉(zhuǎn)換成應(yīng)用可以操作的數(shù)據(jù)這正是 TypeChat 要回答的三個(gè)問(wèn)題如何用自然語(yǔ)言界面去增強(qiáng)傳統(tǒng) UI如何把用戶請(qǐng)求變成應(yīng)用能處理的東西如何確保應(yīng)用是安全的讓開(kāi)發(fā)者和用戶都能信任 AI 做的工作LLM 默認(rèn)輸出自然語(yǔ)言解析極其困難當(dāng)前這波 LLM 默認(rèn)以自然語(yǔ)言交流例如英語(yǔ)。無(wú)論你如何在提示詞里寵著它——比如加一句請(qǐng)用項(xiàng)目符號(hào)列表的形式回答——從原始文本中重建結(jié)構(gòu)對(duì)常規(guī)軟件來(lái)說(shuō)都極其困難。自然語(yǔ)言可能有結(jié)構(gòu)但典型軟件很難從文本中把它還原出來(lái)。讓 LLM 直接輸出 JSON可行但不可靠令人意外的是如果我們要求 LLM 以 JSON 形式回答它通常能給出像樣的結(jié)果。原文檔給出了一個(gè)咖啡店點(diǎn)單的最佳實(shí)踐示例User:Translate the following request into JSON.Could I get a blueberry muffin and a grande latte?Respond only in JSON like the following:{ items: [ { name: croissant, quantity: 2 }, { name: latte, quantity: 1, size: tall } ] }ChatBot:{ items: [ { name: blueberry muffin, quantity: 1 }, { name: latte, quantity: 1, size: grande } ] }這很好——但只是最好情況。示例可以幫助引導(dǎo)結(jié)構(gòu)卻不能詳盡定義 AI 應(yīng)該返回什么也無(wú)法提供任何可校驗(yàn)的依據(jù)。提示詞工程prompt engineering試圖解決這些問(wèn)題卻伴隨著陡峭的學(xué)習(xí)曲線而且提示詞越長(zhǎng)越脆弱。TypeChat 的答案是把提示詞工程替換為模式工程schema engineering。核心思想Just Add Types —— 類型即模式把 TypeScript 類型寫進(jìn)提示詞類型恰好能彌補(bǔ)上面的缺陷。團(tuán)隊(duì)發(fā)現(xiàn)因?yàn)?LLM 在訓(xùn)練時(shí)見(jiàn)過(guò)海量的類型定義類型本身就是引導(dǎo) AI 如何回答的絕佳指南。由于我們要處理的是 JSONJavaScript Object Notation并且 JSON 與 TypeScript 高度契合TypeChat 選擇在提示詞中使用 TypeScript 類型。還是那個(gè)咖啡店點(diǎn)單的例子這次把示例換成類型User:Translate the following request into JSON.Could I get a blueberry muffin and a grande latte?Respond only in JSON that satisfies theResponsetype:type Response { items: Item[]; }; type Item { name: string; quantity: number; size?: string; notes?: string; }ChatBot:{ items: [ { name: blueberry muffin, quantity: 1 }, { name: latte, quantity: 1, size: grande } ] }TypeScript 已被證明非常適合精確描述 JSON。注意size是可選屬性size?: stringLLM 在grande上填了它在blueberry muffin上則合理地省略——類型定義既約束了結(jié)構(gòu)又保留了合理的靈活性。用 TypeScript 編譯器完成校驗(yàn) 修復(fù)閉環(huán)那么問(wèn)題來(lái)了當(dāng)模型犯錯(cuò)、編造出一個(gè)不符合類型的響應(yīng)時(shí)怎么辦答案很優(yōu)雅因?yàn)檫@些類型本身就是合法的 TypeScript 代碼可以直接用 TypeScript 編譯器來(lái)校驗(yàn)響應(yīng)。更妙的是編譯器產(chǎn)生的錯(cuò)誤反饋還可以用來(lái)引導(dǎo)模型修復(fù)自己。把提示 → 響應(yīng) → 校驗(yàn) → 用錯(cuò)誤信息構(gòu)造修復(fù)提示 → 再次校驗(yàn)組合起來(lái)就能得到一個(gè)穩(wěn)健的流程產(chǎn)出類型安全的響應(yīng)供應(yīng)用進(jìn)一步加工、交由用戶確認(rèn)等。一句話總結(jié)這個(gè)核心思想types are all you need類型就是一切所需??焖偕鲜职惭b與情感分析示例從 2023 年 7 月發(fā)布以來(lái)TypeChat 經(jīng)歷了持續(xù)演進(jìn)。當(dāng)前倉(cāng)庫(kù)中 typescript/package.json 記錄的版本為0.1.3Node.js 要求18許可證為 MIT。安裝npm install typechat即可把它接到任意語(yǔ)言模型上使用。若想從源碼構(gòu)建可以在倉(cāng)庫(kù)的 typescript 目錄下執(zhí)行npm install與npm run build構(gòu)建腳本為tsc -p src。安裝后有幾個(gè)子模塊入口見(jiàn) typescript/package.json 的exports字段導(dǎo)入路徑用途typechat核心 APIcreateLanguageModel、createJsonTranslator、結(jié)果類型等typechat/tscreateTypeScriptJsonValidator基于 TypeScript 編譯器校驗(yàn)typechat/zodcreateZodJsonValidator把 Zod 模式轉(zhuǎn)成校驗(yàn)器與 TS 源碼typechat/interactiveprocessRequests交互式/文件批處理入口第一步定義響應(yīng)模式情感分析示例的模式定義在 typescript/examples/sentiment/src/sentimentSchema.ts// The following is a schema definition for determining the sentiment of a some user input. export interface SentimentResponse { sentiment: negative | neutral | positive; // The sentiment of the text }一個(gè)只有單個(gè)字段的接口sentiment只能是三個(gè)字符串字面量之一。這段文本既是 TypeScript 類型供應(yīng)用側(cè)類型檢查也會(huì)被原樣讀入并拼進(jìn)給 LLM 的提示詞中。第二步組裝模型、校驗(yàn)器與翻譯器主程序在 typescript/examples/sentiment/src/main.ts。原文檔給出的是其早期形態(tài)倉(cāng)庫(kù)當(dāng)前版本拆分得更細(xì)但整體脈絡(luò)一致import assert from assert; import dotenv from dotenv; import findConfig from find-config; import fs from fs; import path from path; import { createJsonTranslator, createLanguageModel } from typechat; import { processRequests } from typechat/interactive; import { createTypeScriptJsonValidator } from typechat/ts; import { SentimentResponse } from ./sentimentSchema; const dotEnvPath findConfig(.env); assert(dotEnvPath, .env file not found!); dotenv.config({ path: dotEnvPath }); const model createLanguageModel(process.env); const schema fs.readFileSync(path.join(__dirname, sentimentSchema.ts), utf8); const validator createTypeScriptJsonValidatorSentimentResponse(schema, SentimentResponse); const translator createJsonTranslator(model, validator); // Process requests interactively or from the input file specified on the command line processRequests( , process.argv[2], async (request) { const response await translator.translate(request); if (!response.success) { console.log(response.message); return; } console.log(The sentiment is ${response.data.sentiment}); });這個(gè)程序只做四件事創(chuàng)建模型 → 讀入模式文本 → 創(chuàng)建校驗(yàn)器 → 創(chuàng)建翻譯器然后把用戶的每一行輸入交給translator.translate(request)。成功后response.data就是類型為SentimentResponse的對(duì)象可以直接讀response.data.sentiment失敗則打印response.message。運(yùn)行方式交互式直接node ./dist/main.js或把請(qǐng)求逐行寫入文件后node ./dist/main.js input.txt批處理process.argv[2]就是輸入文件名參數(shù)。數(shù)據(jù)模式工作流從請(qǐng)求到類型安全對(duì)象TypeChat 一次翻譯請(qǐng)求的完整鏈路可以在 typescript/src/typechat.ts 的translate函數(shù)中看到。下面按環(huán)節(jié)拆解。語(yǔ)言模型工廠與環(huán)境變量createLanguageModel的實(shí)現(xiàn)見(jiàn) typescript/src/model.ts。它會(huì)根據(jù)環(huán)境變量自動(dòng)決定走 OpenAI 還是 Azure OpenAI存在OPENAI_API_KEY時(shí)要求同時(shí)提供OPENAI_MODEL否則拋異常可選OPENAI_ENDPOINT默認(rèn)https://api.openai.com/v1/chat/completions與OPENAI_ORGANIZATION存在AZURE_OPENAI_API_KEY時(shí)要求提供AZURE_OPENAI_ENDPOINT格式為https://{your-resource-name}.openai.azure.com/openai/deployments/{your-deployment-name}/chat/completions?api-version{API-version}兩個(gè) key 都不存在時(shí)直接拋出Missing environment variable異常。實(shí)踐上應(yīng)避免把憑據(jù)硬編碼進(jìn)源碼。開(kāi)發(fā)環(huán)境使用.env文件并加入.gitignore配合dotenv加載后再傳給createLanguageModel(process.env)這也是官方示例 typescript/examples/sentiment/src/main.ts 的做法。提示詞生成與翻譯循環(huán)createJsonTranslator默認(rèn)構(gòu)造的請(qǐng)求提示詞見(jiàn) typescript/src/typechat.ts把類型文本和用戶請(qǐng)求拼在一起You are a service that translates user requests into JSON objects of type SentimentResponse according to the following TypeScript definitions:{模式源碼}The following is a user request: {用戶請(qǐng)求} The following is the user request translated into a JSON object with 2 spaces of indentation and no properties with the value undefined:translate的完整流程typescript/src/typechat.ts是一個(gè)循環(huán)用model.complete(prompt)取得模型響應(yīng)從響應(yīng)文本中截取第一個(gè){到最后一個(gè)}之間的內(nèi)容JSON.parse成對(duì)象若設(shè)置了stripNulls遞歸刪除值為null的屬性應(yīng)對(duì) gpt-3.5-turbo 等模型偏愛(ài)給可選屬性填null的傾向交給validator.validate做模式校驗(yàn)成功后再調(diào)用validateInstance做應(yīng)用層附加校驗(yàn)校驗(yàn)失敗時(shí)若attemptRepair為true默認(rèn)把原始響應(yīng)以assistant角色、校驗(yàn)錯(cuò)誤信息以u(píng)ser角色追加進(jìn)提示詞構(gòu)造修復(fù)提示后重試一次修復(fù)提示見(jiàn)createRepairPrompt僅修復(fù)一輪。翻譯器還暴露了幾個(gè)可調(diào)屬性typescript/src/typechat.ts屬性默認(rèn)值說(shuō)明attemptRepairtrue是否在 JSON 校驗(yàn)失敗時(shí)嘗試讓模型修復(fù)置false可禁用stripNullsfalse是否刪除解析后 JSON 中值為null的屬性針對(duì)不允許null的模式validateInstance恒成功模式校驗(yàn)通過(guò)后追加的應(yīng)用層校驗(yàn)回調(diào)如業(yè)務(wù)規(guī)則createRequestPrompt/createRepairPrompt內(nèi)置實(shí)現(xiàn)可整體替換提示詞模板校驗(yàn)器的兩種實(shí)現(xiàn)TypeScript 編譯器與 ZodTypeChat 提供兩個(gè)內(nèi)置校驗(yàn)器。TypeScriptJsonValidatortypescript/src/ts/validate.ts是把模式文本和模型響應(yīng)都交給內(nèi)存中的 TypeScript 編譯器做類型檢查校驗(yàn)時(shí)會(huì)把 JSON 對(duì)象轉(zhuǎn)換成一段臨時(shí)模塊源碼import { SentimentResponse } from ./schema; const json: SentimentResponse {...};見(jiàn)createModuleTextFromJsontypescript/src/ts/validate.ts編譯器以strict: true、skipLibCheck: true、noLib: true配置運(yùn)行并為Array、Object、String等內(nèi)置類型提供一段精簡(jiǎn)lib.d.ts先取語(yǔ)法診斷syntactic無(wú)語(yǔ)法錯(cuò)誤再取語(yǔ)義診斷semantic把所有診斷文本拼成錯(cuò)誤消息特別地對(duì) TS 錯(cuò)誤 2740缺失必填屬性原消息會(huì)被截?cái)酁?and N more會(huì)用類型檢查器重建完整的缺失屬性列表typescript/src/ts/validate.ts讓修復(fù)提示更加精確。ZodJsonValidatortypescript/src/zod/validate.ts適合不想寫.ts文件的場(chǎng)景用一個(gè)名稱 → Zod 類型對(duì)象的映射構(gòu)建校驗(yàn)器validate內(nèi)部調(diào)用 Zod 的safeParse并會(huì)把每個(gè) issue 的路徑與消息拼成錯(cuò)誤文本getZodSchemaAsTypeScript則負(fù)責(zé)把 Zod 模式反向生成為 TypeScript 源碼文本供提示詞使用。情感分析示例的 Zod 版模式如下site/src/docs/typescript/basic-usage.mdimport { z } from zod; export const SentimentResponse z.object({ sentiment: z.enum([negative, neutral, positive]).describe(The sentiment of the text) }); export const SentimentSchema { SentimentResponse };對(duì)應(yīng)的校驗(yàn)器創(chuàng)建方式import { createZodJsonValidator } from typechat/zod; const validator createZodJsonValidator(SentimentSchema, SentimentResponse);交互式輸入與文件輸入processRequeststypescript/src/interactive/interactive.ts有兩個(gè)形態(tài)傳入輸入文件名逐行讀取文件對(duì)每行調(diào)用回調(diào)文件模式常用于自動(dòng)化測(cè)試與批量評(píng)測(cè)例如各示例目錄下的input.txt不傳文件傳undefined在標(biāo)準(zhǔn)輸入上給出交互式提示符如 用戶輸入quit或exit退出。API 模式把意圖翻譯成可執(zhí)行的程序除了把意圖翻譯成數(shù)據(jù)對(duì)象TypeChat 還能把意圖翻譯成由函數(shù)調(diào)用組成的簡(jiǎn)單程序這稱為 API 模式program 翻譯器實(shí)現(xiàn)位于 typescript/src/ts/program.ts。此時(shí)模式源碼必須導(dǎo)出名為API的類型例如 typescript/examples/math/src/mathSchema.ts 這類把數(shù)學(xué)問(wèn)題映射為可調(diào)用函數(shù)的模式。Program 類型與函數(shù)調(diào)用程序翻譯器內(nèi)置的Program模式typescript/src/ts/program.ts把程序表達(dá)為一系列按序求值的函數(shù)調(diào)用export type Program { steps: FunctionCall[]; } export type FunctionCall { func: string; args?: Expression[]; }; export type Expression JsonValue | FunctionCall | ResultReference; export type JsonValue string | number | boolean | null | { [x: string]: Expression } | Expression[]; export type ResultReference { ref: number; };func指定函數(shù)名args是實(shí)參可以是 JSON 值、嵌套函數(shù)調(diào)用、或ref對(duì)前序步驟結(jié)果的引用。createProgramTranslator(model, schema)typescript/src/ts/program.ts生成的提示詞同時(shí)包含上面這段Program定義和你的API定義并要求模型輸出滿足Program類型的 JSON。安全求值與函數(shù)名校驗(yàn)程序翻譯器的獨(dú)特價(jià)值在于安全執(zhí)行。evaluateJsonProgram(program, onCall)typescript/src/ts/program.ts用解釋器按序求值每個(gè)steps項(xiàng)把每個(gè)函數(shù)調(diào)用交給應(yīng)用提供的onCall(func, args)回調(diào)——函數(shù)如何執(zhí)行、能訪問(wèn)哪些資源完全由宿主應(yīng)用控制而不是像 JavaScript 的eval那樣把任意代碼交出去。安全還體現(xiàn)在函數(shù)名校驗(yàn)isValidFunctionNametypescript/src/ts/program.tsfunc必須是純 ASCII 標(biāo)識(shí)符字母、_、$開(kāi)頭后續(xù)可含數(shù)字且不得是Object.prototype的成員如constructor、__proto__、toString、valueOf、hasOwnProperty防止模型借函數(shù)名逃逸出預(yù)期的 API 表面。校驗(yàn)時(shí)createModuleTextFromProgram會(huì)把 JSON 程序轉(zhuǎn)換成一段可類型檢查的 TS 模塊function program(api: API) { const step1 api.xxx(...); ... return ...; }從而復(fù)用同一套編譯器校驗(yàn) 錯(cuò)誤反饋修復(fù)機(jī)制。開(kāi)放與可插拔模型無(wú)關(guān)的架構(gòu)TypeChat 是開(kāi)源的、MIT 許可的且刻意設(shè)計(jì)為模型無(wú)關(guān)model-neutral。雖然內(nèi)置了 OpenAI API 與 Azure OpenAI 服務(wù)的便捷集成但這一方法適用于任何 chat-completion 風(fēng)格的 API——不過(guò)當(dāng)前實(shí)現(xiàn)最適合同時(shí)在 prose 與代碼上訓(xùn)練過(guò)的模型如 gpt-4 系列。接入任意模型只需實(shí)現(xiàn)一個(gè)接口只要能構(gòu)造出滿足TypeChatLanguageModel接口的對(duì)象就能接入 TypeChattypescript/src/model.tsexport interface TypeChatLanguageModel { retryMaxAttempts?: number; // 可選最大重試次數(shù)默認(rèn) 3 retryPauseMs?: number; // 可選重試間隔毫秒默認(rèn) 1000 timeoutMs?: number; // 可選單次 HTTP 請(qǐng)求超時(shí)毫秒默認(rèn) 60000010 分鐘 maxResponseBytes?: number; // 可選響應(yīng)體上限字節(jié)默認(rèn) 104857600100 MB complete(prompt: string | PromptSection[]): PromiseResultstring; }其中只有complete是必選輸入提示詞字符串或帶 role 的PromptSection[]返回Resultstring。ResultT是 TypeChat 的統(tǒng)一結(jié)果類型——success為true時(shí)攜帶data否則攜帶message見(jiàn) typescript/src/result.ts。內(nèi)置集成與細(xì)節(jié)行為OpenAI 兼容createOpenAILanguageModel/createAzureOpenAILanguageModel基于 fetch 封裝 REST 端點(diǎn)請(qǐng)求體固定設(shè)置temperature: 0追求確定性輸出與n: 1Responses API當(dāng)端點(diǎn) URL 路徑以/responses結(jié)尾如https://api.openai.com/v1/responses時(shí)自動(dòng)切換到 OpenAI Responses API 的請(qǐng)求/響應(yīng)格式也可用options.useResponsesApi強(qiáng)制指定重試策略對(duì) 429/500/502/503/504 等瞬時(shí)錯(cuò)誤自動(dòng)重試若響應(yīng)帶Retry-After頭則按其延遲并封頂在重試預(yù)算內(nèi)代理支持可通過(guò)HTTPS_PROXY/HTTP_PROXY/ALL_PROXY/NO_PROXY環(huán)境變量或options.proxyUrl走代理此時(shí)需要按需安裝可選依賴undici防護(hù)機(jī)制單次請(qǐng)求超時(shí)與響應(yīng)體大小上限默認(rèn) 10 分鐘 / 100 MB均可關(guān)閉設(shè)為 0 或負(fù)數(shù)防止慢端點(diǎn)掛起或惡意端點(diǎn)耗盡內(nèi)存。更多示例與文檔資源TypeChat 的兩種模式在倉(cāng)庫(kù)的 typescript/examples 中都有完整可運(yùn)行的落地示范原文檔建議讀者通過(guò)示例理解不同用法數(shù)據(jù)模式把意圖翻譯成 JSON 對(duì)象coffeeShop咖啡店點(diǎn)單即本文開(kāi)頭 JSON 示例的來(lái)源、restaurant餐廳點(diǎn)餐視圖、sentiment情感分析、healthData健康數(shù)據(jù)分析API 模式把意圖翻譯成函數(shù)調(diào)用程序math把數(shù)學(xué)問(wèn)題轉(zhuǎn)成可求值的計(jì)算步驟、calendar日程操作、drawing繪圖指令進(jìn)階組合multiSchema先用分類模式做路由、再分派到多個(gè)子模式、music帶鑒權(quán)的音樂(lè)控制。各示例目錄下都有input.txt預(yù)設(shè)請(qǐng)求、main.ts主程序與package.json可直接對(duì)照運(yùn)行。更完整的 API 拆解與逐步講解參見(jiàn) site/src/docs/typescript/basic-usage.md模式設(shè)計(jì)技巧與 FAQ 分別見(jiàn) site/src/docs/techniques.md 和 site/src/docs/faq.md。小結(jié)把提示詞工程換成模式工程回顧 TypeChat 的設(shè)計(jì)閉環(huán)用類型描述意圖 → 類型既是給 LLM 的提示、又是校驗(yàn)響應(yīng)的標(biāo)準(zhǔn) → 校驗(yàn)失敗時(shí)用編譯器診斷驅(qū)動(dòng)模型自修復(fù) → 得到類型安全、可繼續(xù)加工的數(shù)據(jù)或程序。這套思路把不確定的自然語(yǔ)言 → 結(jié)構(gòu)化數(shù)據(jù)這一最棘手的環(huán)節(jié)收斂為類型工程——開(kāi)發(fā)者添加新意圖不過(guò)是往判別聯(lián)合類型里加一個(gè)成員而已。在此基礎(chǔ)上應(yīng)用可以進(jìn)一步做實(shí)例校驗(yàn)、向用戶確認(rèn)、安全求值等后續(xù)處理從而把 LLM 的能力以可信、可控的方式編織進(jìn)現(xiàn)有應(yīng)用。贊分享大模型AI 應(yīng)用后端【免費(fèi)下載鏈接】TypeChatTypeChat is a library that makes it easy to build natural language interfaces using types.項(xiàng)目地址https://gitcode.com/gh_mirrors/ty/TypeChat點(diǎn)擊查看免費(fèi)下載相關(guān)推薦TypeChat 實(shí)戰(zhàn)指南用 TypeScript 類型替代 Prompt 工程構(gòu)建自然語(yǔ)言接口TypeChat 實(shí)戰(zhàn)指南用 TypeScript 類型替代 Prompt 工程構(gòu)建自然語(yǔ)言接口 導(dǎo)讀 TypeChat 是一個(gè)基于 TypeScript大模型AI 應(yīng)用后端AionUi 遠(yuǎn)端 Agents 深度解析OpenClaw 遠(yuǎn)程網(wǎng)關(guān)的配置管理、設(shè)備握手與流式對(duì)話協(xié)議AionUi 遠(yuǎn)端 Agents 深度解析OpenClaw 遠(yuǎn)程網(wǎng)關(guān)的配置管理、設(shè)備握手與流式對(duì)話協(xié)議 本文基于倉(cāng)庫(kù)中「設(shè)置 → Agents → 遠(yuǎn)端 Ag人工智能AI 應(yīng)用AI Agent交互助手桌面應(yīng)用移動(dòng)開(kāi)發(fā)TypeChat用類型構(gòu)建自然語(yǔ)言界面的革命性框架TypeChat用類型構(gòu)建自然語(yǔ)言界面的革命性框架 TypeChat是一個(gè)革命性的自然語(yǔ)言界面構(gòu)建框架通過(guò)將復(fù)雜的自然語(yǔ)言處理問(wèn)題簡(jiǎn)化為清晰的類型定義問(wèn)題大模型AI 應(yīng)用后端上一篇RTKBase完全指南如何搭建你的個(gè)人GNSS基準(zhǔn)站實(shí)現(xiàn)厘米級(jí)定位下一篇終極GPT-Engineer環(huán)境配置指南Python 3.10-3.12兼容方案與快速部署教程創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考