发布时间:2023-06-27
点击次数: 人工智能现在每天都在发展,大型语言模型变得越来越强大。通过使用ai工具,工作效率得到了显著提高,只需要输入几个字符并按下tab键,代码即可自动完成。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
除了代码补全之外,我们还可以让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步
// 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
免费 Chrome 扩展程序,使用 ChatGPT AI 生成电子邮件和消息。
106
查看详情
ttypescript 库在@jumploops/magic 内部使用,它允许我们在 tsconfig.json 文件中配置自定义转换器。
在transformer内部,是typescript提供的API,用于解析和操作AST,生成想要的代码。可以将这句话重写成:一共有三个步骤构成transformer内部的主要处理流程
本文的关注点不在于操作 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 转换器获取函数的返回类型,将类型转换为 JS
ON Schema 对象,然后替换包含 // @magic 注释函数的源代码 函数的主体,然后调用聊天完成 API 并根据 JSON 架构验证响应。
到这里,今天的这篇文章内容就结束了,希望对你有所帮助。
以上就是当TS遇上AI,会发生什么?的详细内容,更多请关注其它相关文章!
# 工具
# 越秀区网站优化
# 芜湖县网站seo
# 抖音营销推广技巧
# 抚州seo公司都选火星
# 青岛外语网站建设
# 推广网站赚钱的方法
# 珠穆朗玛峰
# 到你
# 我们可以
# 所需
# 腾讯
# 库中
# 太多
# 丰田
# 本田
# 数据结构
# type
# draft
# fig
# 人工智能
# 广东谷歌SEO价格
# 成都知名seo服务
# 全网营销推广外包服务
# 黄冈seo搜索推广作用
相关栏目:
【
行业新闻62819 】
【
科技资讯67470 】
相关推荐:
精准度可提高 20%:英国九家银行签约使用基于 AI 的“消费者欺诈风险系统”应对*
数字彩排、虚拟建厂!这家顶级洗衣机工厂敲开“工业元宇宙”之门
CharacterAI - 也许会成为会话人工智能的未来
Meta开源文本生成音乐大模型,我们用《七里香》歌词试了下
AI+音乐如何“生成”动听旋律?一起揭秘世界人工智能大会开场曲
Meta 推出 Quest 超级分辨率技术,让 VR 画面更清晰
当一个网站的内容被 AI 完全接管
硅谷人工智能研究院创始人皮埃罗·斯加鲁菲:Transformer模型演讲
自动驾驶汽车避障、路径规划和控制技术详解
两小时就能超过人类!DeepMind最新AI速通26款雅达利游戏
央视报道!星纪魅族集团车载人机交互技术成世界移动通信大会焦点
马斯克称人类是半机器人,记忆外包给了电脑
对话式论文阅读工具PaperMate上线,综述细节AI告诉你
烟台大学学生首次在全国大学生无人机航拍竞赛中获奖
人工智能快速发展 打开就业新空间
三星加速AR眼镜进程,预计明年上半年亮相
iPhone两秒出图,目前已知的最快移动端Stable Diffusion模型来了
Bing Chat 和 Bing Search 正式引入深色模式
网易加速行业AI大模型应用,将覆盖100多个应用场景
无人机在电力巡检中的应用:全面解析高效巡检流程
猿编程参加人工智能高峰论坛,推动人工智能教育解决方案在千所学校推行
如何利用AI工具写好本科论文:科技助你一臂之力
高质量数据推动AI场景化应用快速发展及落地
用人工智能技术,亚马逊为用户生成产品评论摘要,帮助他们轻松选购
技术如何使人变得懒惰?
Yann LeCun团队新研究成果:对自监督学习逆向工程,原来聚类是这样实现的
美踏控股推出创新人工智能大数据模型“心乐舞河”:虚拟人音舞社交的新体验
物联网和人工智能的协同作用:释放预测性维护的潜力
谷歌推出新 AI 工具 Imagen Editor,一句话对图片二次创作
7大探索区域打造沉浸式玩乐“元宇宙” 昆明京东MALL未来科技探索官全城招募中
标贝科技亮相国际顶会ICASSP2025 加速布局海外AI数据市场
张朝阳陆川谈AI:大数据模型大幅提升工作效率,ChatGPT冲击最大的是内容创作领域
人工智能产业协同创新中心:全产业链资源在这里汇聚
英伟达CEO宣称生成式AI已迎来“划时代时刻”
数字文明尼山对话 | 在东方圣城与AI潮流梦幻联动,看“智慧大脑”让数字山东更美好
好莱坞面临全面停摆 好莱坞大罢工抵制“AI入侵”
人工智能助力林草行业高质量发展
从谷歌到亚马逊,科技巨头们的AI痴迷
人工智能在项目管理中的作用
618京东3C数码趋势产品备受青睐 AR设备成交额同比增长15倍
不到2S创作AI图像!Snap发布图像生成器SnapFusion
两架海燕号无人机交付中国气象局 助力建设国家级机动气象观测业务
塑造全能智能管家:华为小艺AI加成应对大模型挑战
人工智能赋能无人驾驶:商业化进程再提速
谷歌推出RT-2视觉语言动作模型,使机器人能够掌握垃圾丢弃技能
元宇宙迈入2.0时代,它和生成式人工智能有何关联吗?
参考封面|人工智能“淘金热”
全面拥抱大模型浪潮,ISC 2025打造全球首场AI数字安全峰会
一文读懂自动驾驶的激光雷达与视觉融合感知
脑虎科技:奔跑在“脑机接口”最前沿 跨界融合取得阶段性成果