那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

微軟生成式AI腳本GenAIScript的安裝與配置

OSC開源社區 ? 來源:code秘密花園 ? 2024-11-07 09:13 ? 次閱讀

以下文章來源于code秘密花園,作者ConardLi

最近微軟宣布推出全新的生成式 AI 腳本:GenAIScript!

GenAIScript 是一種結合了生成式人工智能(Generative AI,簡稱 GenAI)和腳本編寫能力的新型腳本語言:

集成 LLMs:GenAIScript 無縫集成了大型語言模型,使得腳本能夠直接調用強大的生成式 AI 能力,簡化復雜的自然語言處理任務。

簡化 JavaScript 語法:結合標準的 JavaScript 語法,使開發者無需學習新的編程語言,降低了上手難度。

高效的自動化能力:通過腳本自動化各種任務,如數據處理、內容生成和執行 API 請求等,能夠高效完成。

$`Analyze${env.files}andreporterrors.Usegitmojis.`

通過簡化的 JavaScript 語法,它將大型語言模型(LLMs)引入到腳本編寫過程中,使開發者能夠更加靈活快捷地創建自動化任務和智能應用。

//definethecontext
def("FILE",env.files,{endsWith:".pdf"})
//structurethedata
constschema=defSchema("DATA",{type:"array",items:{type:"string"}})
//assignthetask
$`AnalyzeFILEandextractdatatoJSON.`
//saveresultstofile
defFileOutput("*.pdf.txt","Extracteddata",{schema})
//tools
defTool("weather","liveweather",{city:"Paris"},/*schema*/
async({city})=>{..."sunny"})/*callback*/
//agents!
defAgent("git","answergitquestions","Youareagitexpert.",{tools:["git"]})
...

支持 JavaScript 和 TypeScript

GenAIScript 支持使用 JavaScript 和 TypeScript 來構建 prompts,使得開發過程更加靈活和方便。腳本文件以 .genai.mjs 或 .genai.mts 擴展名命名,分別表示 JavaScript 或 TypeScript 文件,并設計用于通過 LLM 構建提示。

.genai.mjs:模塊化 JavaScript 語法,支持導入其他模塊。

.genai.js:非模塊化 JavaScript 文件,通過 eval 執行,不支持模塊導入。

.genai.mts:模塊化 TypeScript 文件,支持導入其他 TypeScript 模塊,包括動態導入。

system.*.genai.mjs:系統提示模板,默認情況下未列出。

GenAIScript 將自動檢測工作區中任何匹配 *.genai.mjs、*.genai.js 或 *.genai.mts 的文件。雖然腳本文件可以放置在工作區的任何位置,但擴展會默認將它們放置在 genaisrc 文件夾中。

以下是一個名為 shorten.genai.mjs 的示例文件,演示了如何創建一個縮短文本的提示腳本:

script({
title:"Shorten",//在UI和Copilot聊天中顯示
description:"Apromptthatshrinksthesizeoftextwithoutlosingmeaning",//也顯示但灰色顯示
})

constfile=def("FILE",env.files)//定義文件變量

//將文本附加到提示中
$`Shorten${file}.Limitchangestominimum.`

安裝與配置

GenAIScript 需要 Node.js 才能運行。我們推薦安裝 Node.js 的長期支持版 (LTS)。

VSCode 擴展

然后安裝 Visual Studio Code 擴展

在 Visual Studio Code Marketplace 中搜索 GenAIScript,安裝最新的穩定版本擴展。

安裝 Visual Studio Code。這是一個輕量且強大的源代碼編輯器,支持 Windows、macOS 和 Linux。

在 Visual Studio Code 中打開你的項目文件夾。

點擊左側活動欄中的擴展視圖圖標

搜索 GenAIScript 并點擊 安裝。安裝成功后,你將看到擴展視圖中的圖標

(可選)點擊擴展頁面上的 齒輪圖標,并選擇 添加到工作區推薦。

如果你需要安裝特定版本的擴展,建議將 genaiscript.vsix 存儲在你的倉庫中并使用手動安裝。步驟如下:

打開 GitHub 最新發布頁面,下載 genaiscript.vsix 到你的項目根目錄。

在 Visual Studio Code 中打開你的項目。

右鍵點擊 .vsix 文件,選擇 Install Extension VSIX… 進行安裝。

071e8cb2-9bf0-11ef-a511-92fbcf53809c.png

命令行工具

GenAIScript 命令行工具允許你從任何終端運行腳本。

使用 npx 運行腳本

npxgenaiscriptrunmy-scriptsome/path/*.pdf

npx 將自動安裝并緩存CLI。你也可以將它作為 devDependency 添加到你的項目中:

安裝 genaiscript 為開發依賴

npminstall-Dgenaiscript

GenAIScript 會在默認的終端中啟動一個 node 服務器。如果默認終端未配置或不支持 Node.js,你可能需要在用戶/工作區設置中更新它。

打開命令面板 Ctrl+Shift+P,搜索 Terminal: Select Default Profile。

選擇一個終端配置文件,比如 Git Bash。

這樣配置好之后,你便可以方便地在 Visual Studio Code 或命令行中進行 GenAIScript 的開發工作了。

運行模型

通過 GitHub Models 或 GitHub Copilot 運行模型:

script({...,model:"github:gpt-4o"})

支持 Ollama、LocalAI 等開源模型在本地運行:

script({...,model:"ollama:phi3"})

數據架構

在 GenAIScript 中,我們可以強制 LLM 生成符合特定架構的數據。這種方法效果相當不錯,并且 GenAIScript 還會提供自動驗證功能。GenAIScript 支持的架構比完整的 JSON 架構規范要簡單,建議使用簡單的架構以避免混淆 LLM,然后再將其導入到你的應用特定的數據格式中。

你可以使用 defSchema 來定義提示輸出的 JSON/YAML 架構。例如,下面定義了一個城市列表的架構:

constschema=defSchema("CITY_SCHEMA",{
type:"array",
description:"Alistofcitieswithpopulationandelevationinformation.",
items:{
type:"object",
description:"Acitywithpopulationandelevationinformation.",
properties:{
name:{type:"string",description:"Thenameofthecity."},
population:{type:"number",description:"Thepopulationofthecity."},
url:{type:"string",description:"TheURLofthecity'sWikipediapage."}
},
required:["name","population","url"]
}
})

$`GeneratedatausingJSONcompliantwith${schema}.`

根據 TypeChat 的 “All You Need Is Types” 方法,架構會在插入 LLM 提示前轉換成 TypeScript 類型。例如,上面的 CITY_SCHEMA 類型如下:

//Alistofcitieswithpopulationandelevationinformation.
typeCITY_SCHEMA=Array<{
????//?The?name?of?the?city.
????name:?string,
????//?The?population?of?the?city.
????population:?number,
????//?The?URL?of?the?city's?Wikipedia?page.
????url:?string,
}>

一旦定義了架構,你可以告訴 LLM 根據這個架構生成數據。你可以通過以下方式生成符合 CITY_SCHEMA 的 JSON 數據:

constschema=defSchema("CITY_SCHEMA",{
type:"array",
description:"Alistofcitieswithpopulationandelevationinformation.",
items:{
type:"object",
description:"Acitywithpopulationandelevationinformation.",
properties:{
name:{type:"string",description:"Thenameofthecity."},
population:{type:"number",description:"Thepopulationofthecity."},
url:{type:"string",description:"TheURLofthecity'sWikipediapage."}
},
required:["name","population","url"]
}
})
$`GeneratedatausingJSONcompliantwith${schema}.`

生成的數據示例:

[
{
"name":"NewYork",
"population":8398748,
"url":"https://en.wikipedia.org/wiki/New_York_City"
},
{
"name":"LosAngeles",
"population":3990456,
"url":"https://en.wikipedia.org/wiki/Los_Angeles"
},
{
"name":"Chicago",
"population":2705994,
"url":"https://en.wikipedia.org/wiki/Chicago"
}
]

當生成的 JSON/YAML 內容帶有架構標識符時,GenAIScript 會自動驗證其是否符合定義的架構。你可以在腳本運行時使用 parsers.validateJSON 來驗證 JSON 數據:

constvalidation=parsers.validateJSON(schema,json)

特性和功能

文本文件處理

GenAIScript 支持從 PDF、DOCX 等文件中提取文本內容,比如處理和解析 PDF 文件:

def("PDF",env.files,{endsWith:".pdf"})
const{pages}=awaitparsers.PDF(env.files[0])

def 函數將自動解析 PDF 文件并從中提取文本,parsers.PDF 函數會讀取 PDF 文件并嘗試將其干凈地轉換為適合 LLM 的文本格式。

表格數據處理

可以從 CSV、XLSX 等表格文件中提取數據并進行處理。

def("DATA",env.files,{endsWith:".csv",sliceHead:100})
constrows=awaitparsers.CSV(env.files[0])
defData("ROWS",rows,{sliceHead:100})

文件操作

GenAIScript 提供了對工作區文件系統以及在用戶界面中選定文件的訪問權限。

env.files 變量包含了通過用戶界面或命令行選中的文件數組,你可以直接在 def 函數中傳遞并添加額外過濾條件。

def("PDFS",env.files,{endsWith:".pdf"})

使用 defFileOutput 指定允許輸出的文件路徑及其用途描述。

defFileOutput("src/*.md","Productdocumentationinmarkdownformat")

使用 glob 模式在工作區中查找文件:

constmds=awaitworkspace.findFiles("**/*.md")
def("DOCS",mds)

使用 grep 方法在工作區中搜索含有特定模式的文件內容:

const{files}=awaitworkspace.grep("example","**/*.md")
def("FILE",files)

讀取 JSON 文件內容:

constdata=awaitworkspace.readJSON("data.json")

將文本內容寫入文件:

awaitworkspace.writeText("output.txt","Hello,world!")

LLM 工具

你可以注冊 JavaScript 函數作為工具來使用。

defTool(
"weather",
"queryaweatherwebapi",
{location:"string"},
async(args)=>
awaitfetch(`https://weather.api.api/?location=${args.location}`)
)

注冊 JavaScript 函數作為工具并結合 prompt 成為代理。

defAgent(
"git",
"QueryarepositoryusingGittoaccomplishtasks.",
`YourareahelpfulLLMagentthatcanusethegittoolstoquerythecurrentrepository.
AnswerthequestioninQUERY.
-Thecurrentrepositoryisthesameasgithubrepository.`,
{model,system:["system.github_info"],tools:["git"]}
)
thenuseitasatool

script({tools:"agent"})

$`Doastatisticalanalysisofthelastcommits`

內置 RAG

支持矢量搜索功能。

const{files}=awaitretrieval.vectorSearch("cats","**/*.md")

運行代碼

LLM 可以在沙箱環境下運行代碼。

script({tools:["python_code_interpreter"]})

也可以在 Docker 容器中運行代碼。

constc=awaithost.container({image:"python:alpine"})
constres=awaitc.exec("python--version")

還可以運行 Prompty 文件。

---
name:poem
---

Writemeapoem

應用示例

示例1:生成 Git 提交信息

gcm 腳本提供了生成提交信息的引導流程。它會根據 Git 倉庫中的暫存變更生成一個提交信息,并引導用戶提交這些變更或重新生成提交信息。

首先,我們定義 script 函數,設置腳本的標題和描述,并指定要使用的模型:

script({
title:"gitcommitmessage",
description:"Generateacommitmessageforallstagedchanges",
model:"openai:gpt-4o",
})

接下來,使用 git diff 檢查你 Git 倉庫中的暫存變更。如果沒有暫存任何變更,GenAI 會通知你將所有變更暫存:

//檢查暫存的變更,如果沒有則暫存所有變更
constdiff=awaitgit.diff({
staged:true,
askStageOnEmpty:true,
})
if(!diff)cancel("nostagedchanges")
console.log(diff.stdout)//輸出變更內容供你查看

此部分是關鍵。我們進入一個循環,根據 diff 生成提交信息。如果你對生成的信息不滿意,可以選擇編輯、接受或重新生成:

letchoice
letmessage
do{
//生成一個符合規范的Git提交信息
constres=awaitrunPrompt((_)=>{
_.def("GIT_DIFF",diff,{maxTokens:20000,language:"diff"})
_.$`GenerateagitconventionalcommitmessageforthechangesinGIT_DIFF.
-doNOTaddquotes
-maximum50characters
-useemojis`
})
message=res.text
}while(choice!=="commit")

如果你選擇提交,GenAI 會用你的信息運行 git commit 命令,如果你愿意,還可以立即將變更推送到倉庫:

if(choice==="commit"&&message){
console.log(
(awaithost.exec("git",["commit","-m",message,"-n"])).stdout
)
if(awaithost.confirm("Pushchanges?",{default:true}))
console.log((awaithost.exec("gitpush")).stdout)
}

使用以下命令在終端運行腳本:

npxgenaiscriptrungcm

這就是完整的 gcm 腳本實現,通過運行上述命令,可以自動化生成 Git 提交信息并進行提交。

示例2:圖片替代文本生成器

圖片的替代文本(alt text)對于使圖片對包括視障人士在內的所有人可接觸是至關重要的。它為圖片提供了一種文字描述,使屏幕閱讀器能夠將內容傳達給看不到圖片的用戶。然而,為圖片編寫替代文本可能非常耗時,尤其是當你要處理大量圖片時。這時,AI 可以大顯身手。使用類似于 OpenAI 的 GPT-4 的語言模型,你可以自動生成圖片替代文本,從而節省時間和精力。

這個示例展示了如何構建一個工具來為 Markdown 文件中的圖片生成替代文本。腳本主要由 Typescript 代碼組成,并在 GenAIScript CLI 中運行。讓我們來逐步解析這些代碼。

首先,我們定義 script 函數,設置腳本的標題和描述,并指定要使用的模型:

script({
title:"ImageAltTextify",
description:"Generatealttextforimagesinmarkdownfiles",
parameters:{
docs:{
type:"string",
description:"pathtosearchformarkdownfiles",
default:"**.{md,mdx}",
},
force:{
type:"boolean",
description:"regeneratealldescriptions",
default:false,
},
assets:{
type:"string",
description:"imageassetspath",
default:"./assets/images",//修改為你的資產文件夾路徑
},
},
})

在這里,我們聲明了腳本,并使用 OpenAI 的 GPT-4 模型。我們還設置了文件路徑、是否重新生成所有描述,以及資產路徑等參數。

接下來,提取環境變量:

const{docs,force,assets}=env.vars

然后,我們定義一個正則表達式來查找 Markdown 中的圖片:

constrx=force
?/![[^]]*](([^)]+.(png|jpg)))/g//匹配包含或不包含替代文本的圖片
:/![s*](([^)]+.(png|jpg)))/g//匹配沒有替代文本的圖片

const{files}=awaitworkspace.grep(rx,{
path:docs,
glob:"*.mdx",
readText:true,
})

我們使用 workspace.grep 來查找指定文檔中符合正則表達式模式的所有內容。

對于找到的每個圖片 URL,我們使用一個內聯提示來生成替代文本:

for(constfileoffiles){
const{filename,content}=file
constmatches=content.matchAll(rx)

for(constmatchofmatches){
consturl=match[1]
constresolvedUrl=resolveUrl(filename,url)
const{text}=awaitrunPrompt(
(_)=>{
_.defImages(resolvedUrl)
_.$`
Youareanexpertinassistivetechnology.
Youwillanalyzetheimage
andgenerateadescriptionalttextfortheimage.
-Donotincludealttextinthedescription.
-Keepitshortbutdescriptive.
-Donotgeneratethe[character.`
},
{
system:["system.safety_harmful_content"],
model:"openai:gpt-4o",
}
)
imgs[url]=text
}
}

最后,我們將替代文本更新到 Markdown 內容中:

constnewContent=content.replace(
rx,
(m,url)=>`![${imgs[url]??""}](${url})`
)
if(newContent!==content)awaitworkspace.writeText(filename,newContent)

我們使用生成的替代文本替換原始內容中的占位符,并保存更新后的文件。

你需要通過 GenAIScript CLI 來運行這個腳本。如果你還沒有安裝 GenAIScript CLI,請查看安裝指南。安裝后,可以通過以下命令運行腳本:

npxgenaiscriptruniat

腳本默認導入了一個安全系統消息,以防止生成有害文本內容:

//safetysystemmessagetopreventgeneratingharmfultext
system:["system.safety_harmful_content"],

通過這個腳本,你可以自動化生成 Markdown 文件中圖片的替代文本,大大提高工作效率并確保內容的可訪問性。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 微軟
    +關注

    關注

    4

    文章

    6629

    瀏覽量

    104458
  • 人工智能
    +關注

    關注

    1796

    文章

    47664

    瀏覽量

    240256
  • 腳本語言
    +關注

    關注

    0

    文章

    48

    瀏覽量

    8271
  • 生成式AI
    +關注

    關注

    0

    文章

    514

    瀏覽量

    547

原文標題:微軟推出全新的生成式AI腳本:GenAIScript

文章出處:【微信號:OSC開源社區,微信公眾號:OSC開源社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    微軟HoloLens正研發AI芯片 可識別語音和圖像

      導讀:關于下一代 HoloLens,微軟終于透露了一些消息:正在研發 AI 芯片,使其識別語音和圖像。 [img][/img] 雷鋒網(公眾號:雷鋒網)拍攝于 CVPR 現場   日前,在
    發表于 07-31 21:17

    NVIDIA 攜手微軟,在生成 AI 的新時代推動 Windows PC 創新

    行業領導者打破藩籬,使開發人員能夠輕松地在 Windows 11 上訓練并部署先進的 AI 模型,并在配備 RTX 的 PC 和工作站上提供節能的推理。 生成 AI,以 ChatGP
    的頭像 發表于 05-25 09:15 ?734次閱讀
    NVIDIA 攜手<b class='flag-5'>微軟</b>,在<b class='flag-5'>生成</b><b class='flag-5'>式</b> <b class='flag-5'>AI</b> 的新時代推動 Windows PC 創新

    什么是生成AI?生成AI的四大優勢

    生成AI是一種特定類型的AI,專注于生成新內容,如文本、圖像和音樂。這些系統在大型數據集上進行訓練,并使用機器學習算法
    發表于 05-29 14:12 ?4598次閱讀

    虹軟圖像深度恢復技術與生成AI的創新 生成AI助力

    當前,生成人工智能(AI)技術的快速發展令人矚目。它能夠理解人類的描述,并在短時間內生成逼真的圖像和視頻。在生成
    發表于 06-21 09:06 ?480次閱讀

    ABB攜手微軟生成AI引入工業應用

    ABB與微軟合作將生成AI功能整合到工業數字化解決方案中,打造更安全、更智能、更可持續的運營
    發表于 08-03 15:43 ?456次閱讀
    ABB攜手<b class='flag-5'>微軟</b>將<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>引入工業應用

    生成AI投資規模有望突破2千億美元!波音、IBM……微軟全球業務線合作再升級!

    關注微軟科技視頻號 了解更多科技前沿資訊 點亮在看,給BUG點好看 點擊閱讀原文,了解關于微軟那些事兒 原文標題:生成AI投資規模有望突破
    的頭像 發表于 09-14 12:10 ?450次閱讀
    <b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>投資規模有望突破2千億美元!波音、IBM……<b class='flag-5'>微軟</b>全球業務線合作再升級!

    利用 NVIDIA Jetson 實現生成 AI

    近日,NVIDIA 發布了 Jetson 生成 AI 實驗室(Jetson Generative AI Lab),使開發者能夠通過 NVIDIA Jetson 邊緣設備在現實世界中探
    的頭像 發表于 11-07 21:25 ?1093次閱讀
    利用 NVIDIA Jetson 實現<b class='flag-5'>生成</b><b class='flag-5'>式</b> <b class='flag-5'>AI</b>

    生成AI技術的應用前景

    生成 AI(人工智能)與我們熟知的 AI 有何不同?這篇文章將為我們一探究竟!
    的頭像 發表于 11-29 12:20 ?1432次閱讀

    因為生成AI興起《紐約時報》起訴OpenAI和微軟

    因為生成AI興起《紐約時報》起訴OpenAI和微軟 對于生成
    的頭像 發表于 12-28 17:08 ?710次閱讀

    博世與微軟合作開發生成AI產品,強化自動駕駛功能與車輛安全性

    近日,全球知名的技術公司博世與微軟宣布了一項重要的合作計劃,雙方將聯手開發生成AI生成人工
    的頭像 發表于 03-04 11:23 ?944次閱讀

    博世與微軟合作開發生成AI產品

    全球知名科技公司博世與微軟聯合宣布,雙方已建立合作關系,共同致力于開發先進的生成AI產品。這一合作的核心目標在于通過利用生成
    的頭像 發表于 03-05 11:17 ?958次閱讀

    微軟發布AI生成解決方案,預防失控風險

    微軟公開聲明:“確保生成 AI 免受提示詞注入攻擊已成為一項關鍵任務。這類攻擊企圖通過操縱人工智能系統達成其意料之外的結果,如制造不良內容或泄露敏感數據?!?/div>
    的頭像 發表于 04-02 10:17 ?383次閱讀

    原來這才是【生成AI】!!

    隨著ChatGPT、文心一言等AI產品的火爆,生成AI已經成為了大家茶余飯后熱議的話題??墒?,為什么要在AI前面加上“
    的頭像 發表于 06-05 08:04 ?290次閱讀
    原來這才是【<b class='flag-5'>生成</b><b class='flag-5'>式</b><b class='flag-5'>AI</b>】??!

    生成AI工具作用

    生成AI工具是指那些能夠自動生成文本、圖像、音頻、視頻等多種類型數據的人工智能技術。在此,petacloud.ai小編為您整理
    的頭像 發表于 10-28 11:19 ?314次閱讀

    生成AI工具好用嗎

    當下,生成AI工具正以其強大的內容生成能力,為用戶帶來了前所未有的便捷與創新。那么,生成
    的頭像 發表于 01-17 09:54 ?87次閱讀
    大发888娱乐场下载官方| 百家乐官网荷官培训| 日喀则市| 泾源县| 凯旋国际娱乐| 博彩网皇冠| 澳门博彩股份有限公司| 六合彩走势图| 网络投注| 邢台县| 百家乐官网路单规则| 百家乐官网视频游戏平台| 澳门百家乐官网真人娱乐城| 澳门百家乐官网十大缆| 足球.百家乐官网投注网出租| 百家乐官网真人娱乐场开户注册| 线上百家乐官网平玩法| 网上百家乐正规代理| 百家乐赌博器| 大发888在线充值| 久盛国际娱乐城| 桑植县| 百家乐官网楼梯缆| 百家乐官网园太阳| 网上百家乐庄家有赌场优势吗| 百家乐的弱点| 水果机技巧规律| 必胜娱乐场| 宝胜娱乐| 澳门百家乐官网娱乐城怎么样| 神娱乐百家乐官网的玩法技巧和规则 | 德州扑克看牌器| 百家乐官网技巧阅读| 百家乐官网免费改单| 网上百家乐哪里好| 百家乐网络娱乐场开户注册| 六合彩码报| 澳门百家乐官网玩法心得技巧| 免费百家乐规律| 百家乐几点不用补| 赌博粉|