背景
了解一下AI在前端里的工具
先贴官网:GenAIScript
体验内容生成
-
在项目的根目录下创建genaisrc/index.genai.mjs
$`帮我生成一个元素类似{name: "小明", age: 18}的数组,数据是动态的,长度为10}` -
执行脚本
genaiscript run genaisrc/index.genai.mjs -
生成数据,输出在.genaiscript/cache/chat/db.jsonl文件里
{"sha":"d857e370a6e09f379c0e2f95d3db2c47034ccf80a5c715035428fcda72c1edc3","val":{"text":"```json\n[\n {\"name\": \"小明\", \"age\": 18},\n {\"name\": \"小红\", \"age\": 21},\n {\"name\": \"小刚\", \"age\": 19},\n {\"name\": \"小丽\", \"age\": 22},\n {\"name\": \"小强\", \"age\": 20},\n {\"name\": \"小芳\", \"age\": 18},\n {\"name\": \"小军\", \"age\": 25},\n {\"name\": \"小翠\", \"age\": 23},\n {\"name\": \"小华\", \"age\": 24},\n {\"name\": \"小英\", \"age\": 20}\n]\n```\n\nWhen generating data dynamically, ensure each element has unique attributes while maintaining the desired structure and length.","finishReason":"stop"}}
安装过程
环境准备
- node版本需要20.0.0以上
- 一个支持openai 4.0的openai api key
链接信息
在根目录下创建.env文件
支持OPENAI_API_TYPE 、 OPENAI_API_BASE 、 OPENAI_API_KEY 、 OPENAI_API_VERSION变量
microsoft.github.io/genaiscript…
OPENAI_API_BASE=xxx # 代理地址
OPENAI_API_KEY=sk-xxx # openai key
安装GenAIScript
我本地全局安装
npm i -g genaiscript
执行脚本
genaiscript -V
可以在命令行执行genaiscript run genaisrc/index.genai.mjs验证配置情况,如果有问题会有错误提示
基础知识了解
初略的翻了一下文档,大概可以理解把LLM作为工具
具体的使用需要结合实际
内容生成和管理:GenAIScript 可以生成博客、文章、邮件等内容。通过设置不同的主题和写作风格,可以自动化生成高质量内容,适用于社交媒体、新闻平台和企业宣传等
- 自动化代码生成:可以根据设计文档或接口规范自动生成组件、页面或模块的代码,减少手动编码的工作量。
- 智能推荐和优化:通过分析现有代码库,GenAIScript 可以建议优化方案或重构建议,提升代码质量和可维护性。
- 文档生成:自动生成API文档、组件文档或使用说明,确保文档与代码同步更新,减少维护成本。
- 测试用例生成:根据代码逻辑自动生成单元测试或集成测试用例,提高测试覆盖率。
指南
地址: microsoft.github.io/genaiscript…
- 将提示转换为代码
- 解析PDF,解析IMage
- Search and Fetch 搜索和获取
- Tool Agent(咱也是正则“糕”手)
- 总结很多文档
- 容器化工具
- 生成的知识
- LLM as a tool
Transformer.js
翻文档发现可以加载Transformer.js
microsoft.github.io/genaiscript…
script({
title: "summary of summary - transformers.js",
model: "ollama:phi3",
files: ["src/rag/markdown.md"],
tests: {
files: ["src/rag/markdown.md"],
keywords: ["markdown"],
},
})
console.log("loading summarizer transformer")
import { pipeline } from "@xenova/transformers"
const summarizer = await pipeline("summarization")
for (const file of env.files) {
console.log(`summarizing ${file.filename}`)
const [summary] = await summarizer(file.content)
// @ts-ignore
const { summary_text } = summary
def("FILE", {
filename: file.filename,
// @ts-ignore
content: summary_text,
})
}
console.log(`summarize all summaries`)
$`Summarize all the contents in FILE.`
Zod Schema
可以通过Zod生成一些数据
import { z } from "zod"
// city array schema
const CitySchema = z.array(
z.object({
name: z.string(),
population: z.number(),
url: z.string(),
})
)
import { zodToJsonSchema } from "zod-to-json-schema"
// convert to JSON schema
const CitySchemaJSON = zodToJsonSchema(CitySchema, "citySchema").definitions[
"citySchema"
] as JSONSchemaArray
// JSON schema to constrain the output of the tool.
const schema = defSchema("CITY_SCHEMA", CitySchemaJSON)
// ...