400 128 6709

行业新闻

当TS遇上AI,会发生什么?

发布时间:2023-06-27点击次数:

人工智能现在每天都在发展,大型语言模型变得越来越强大。通过使用ai工具,工作效率得到了显著提高,只需要输入几个字符并按下tab键,代码即可自动完成。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

当TS遇上AI,会发生什么?

除了代码补全之外,我们还可以让AI帮助我们自动化功能并返回所需的JSON数据。

先让我们看一个例子:

// 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());})();

在上面的代码中,我们定义了一个 getHighestMountain 异步函数来获取世界上最高峰的信息,它的返回值是 Mountain 接口定义的数据结构。函数内部没有具体的实现,我们只是通过注释描述函数需要做什么。

编译并执行上述代码后,控制台会输出如下结果:

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

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

接下来我就来揭秘getHighestMountain函数的秘密。

为了了解 getHighestMountain 异步函数内部做了什么,我们看一下编译后的 JS 代码:

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#\"}"});});}

从上面的代码可以看出,@jumploops/magic 库中的 fetchCompletion 函数在 getHighestMountain 函数内部被调用。

从这个函数的参数中,我们看到了之前TS函数的函数注释,此外,我们还看到了一个包含schema属性的对象。The value of this attribute is the JSON Schema object corresponding to the Mountain interface.。

接下来我们重点分析@jumploops/magic库中的fetchCompletion函数。fetchCompletion.ts文件中定义了一个函数,其内部的处理流程分为3步

  • 组装 Chat Completions API 所需的提示;
  • 调用Chat Completions API获取响应结果;
  • 解析响应结果并使用 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);}

在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代码。

ChatGPT Writer ChatGPT Writer

免费 Chrome 扩展程序,使用 ChatGPT AI 生成电子邮件和消息。

ChatGPT Writer 106 查看详情 ChatGPT Writer

ttypescript 库在@jumploops/magic 内部使用,它允许我们在 tsconfig.json 文件中配置自定义转换器。

在transformer内部,是typescript提供的API,用于解析和操作AST,生成想要的代码。可以将这句话重写成:一共有三个步骤构成transformer内部的主要处理流程

  • 扫描包含 // @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库中有关人工智能功能的文档可以供您阅读,关于这一部分。

如果大语言模型能够按照我们的要求可控地输出结构化数据。那么我们可以做很多事情。

目前很多低代码平台或者RPA(Robotic Process Automation)平台都可以获取对应的JSON Schema对象。

借助 @jumploops/magic 的解决方案,我们可以使低代码平台或 RPA 平台变得更加智能。例如,快速创建表单页面或以自然语言的形式发布各种任务。

最后,我们来总结一下 @jumploops/magic 库背后的工作,它使用 TypeScript 转换器获取函数的返回类型,将类型转换为 JSON Schema 对象,然后替换包含 // @magic 注释函数的源代码 函数的主体,然后调用聊天完成 API 并根据 JSON 架构验证响应。

到这里,今天的这篇文章内容就结束了,希望对你有所帮助。

以上就是当TS遇上AI,会发生什么?的详细内容,更多请关注其它相关文章!


# 工具  # 越秀区网站优化  # 芜湖县网站seo  # 抖音营销推广技巧  # 抚州seo公司都选火星  # 青岛外语网站建设  # 推广网站赚钱的方法  # 珠穆朗玛峰  # 到你  # 我们可以  # 所需  # 腾讯  # 库中  # 太多  # 丰田  # 本田  # 数据结构  # type  # draft  # fig  # 人工智能  # 广东谷歌SEO价格  # 成都知名seo服务  # 全网营销推广外包服务  # 黄冈seo搜索推广作用 


相关栏目: 【 行业新闻62819 】 【 科技资讯67470


相关推荐: 给小朋友最好的科技礼物:乐天派桌面机器人  工信部信通院发布《2025大模型和AIGC产业图谱》 360智脑覆盖全产业链  NVIDIA垄断AI市场90%份额:AMD性能追上80% 软件太不能打  小艺将具备大模型能力,鸿蒙4加速AI普及之路  13万个注释神经元,5300万个突触,普林斯顿大学等发布首个完整「成年果蝇」大脑连接组  家电行业观察:AI加持下,全屋智能将成为智能家电未来?  国宝级文物“铜兽驮跪坐人顶尊铜像”完成模拟拼接,腾讯AI立功  消息称字节机器人团队已有约50人,计划年底扩充到上百人  QQ音乐业内率先推出「AI一起听」功能,领取你的AI听歌助手  可按用户语气自动回复消息,Zoom 推出基于生成式 AI 的新功能  谷歌在人工智能领域没有“护城河”?  人工智能产业协同创新中心:全产业链资源在这里汇聚  特斯拉人形机器人将亮相 预计售价不超过15万元  ChatGPT大更新!OpenAI奉上程序员大礼包:API新增杀手级能力还降价,新模型、四倍上下文都来了  用人工智能技术,亚马逊为用户生成产品评论摘要,帮助他们轻松选购  国网辉南供电:无人机空中巡检 全力护航端午佳节  人形机器人打开精密齿轮市场全新空间!受益上市公司梳理  深企派遣无人机救援队赴京津冀开展防汛救灾任务  AI浪潮席卷,时空壶为何能成为AI翻译时代的破局者  腾讯TRS之元学习与跨域推荐的工业实战  AI生成会议纪要 百度如流升级推出超级助手、智能编码等功能  改动一行代码,PyTorch训练三倍提速,这些「高级技术」是关键  全国体育人工智能大会举办,专家聚焦体育人工智能领域人才培养  GPT-4成功战胜AI-Guardian审核系统:谷歌研究团队的人工智能抵抗人工智能  OpenAI首席执行官引用《道德经》 呼吁就AI安全问题合作  元宇宙技术带你穿梭“大运河”,江苏书展上的数字阅读馆吸睛小读者  英伟达的AI领域垄断地位:一直无法撼动吗?  日入400万,第一批AI骗子已上岗  猿编程参加人工智能高峰论坛,推动人工智能教育解决方案在千所学校推行  张朝阳陆川谈AI:大数据模型大幅提升工作效率,ChatGPT冲击最大的是内容创作领域  以分布式网络串联闲置GPU,这家创企称可将AI模型训练成本降低90%  机构:边缘AI或是当前预期差最大的AI方向  云深处科技绝影 Lite3 与 X20 四足机器人亮相  1000万张照片训练AI模型 科学家找到水下定位新方法  边喷火边跳踢踏舞,机器狗最新技能爆火全网!网友直呼真·热狗  【搞事】时隔4年 谷歌更新安卓logo 机器人头更饱满了  有远见!华为四年前注册商标Vision Pro:苹果AR国内要改名  “电碳”技术提升碳排放监测精度  AI技术改变*,新骗局来袭,*成功率接近100%  AI教父Bengio:我感到迷失,对AI担忧已成「精神内耗」!  微软向美国政府提供GPT的大模型,安全性如何保证?  马斯克嘲讽人工智能:机器学习本质就是统计学  Spotify计划推出AI驱动的音乐播放器功能  世界上第一个完全由人工智能驱动的图像编辑器!  人工智能:解决劳动力短缺的关键策略  如何用AI开创智慧能源新时代?固德威正让能源“通人性”!  社区里,孩子们体验“机器人竞技”  宇宙探索下一阶段,机器代替人类,AI会在太空探索中取代人类吗?  百川智能发布Baichuan-13B AI模型,号称“130亿参数开源可商用”  2025智源大会AI安全话题备受关注,《人机对齐》新书首发 

400 128 6709
E-mail

contact@tlftec.cn

扫一扫,添加微信

©  云南淘乐房科技有限公司 版权所有  滇ICP备2025071560号  

云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司