了解GenAIScript

333 阅读1分钟

背景

了解一下AI在前端里的工具

先贴官网:GenAIScript

体验内容生成

  1. 在项目的根目录下创建genaisrc/index.genai.mjs

    $`帮我生成一个元素类似{name: "小明", age: 18}的数组,数据是动态的,长度为10}`
    
  2. 执行脚本

    genaiscript run genaisrc/index.genai.mjs
    
  3. 生成数据,输出在.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…

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)
// ...