
Ambiente JavaScript-ish com ferramentas convenientes para ingestão de arquivos, desenvolvimento imediato e extração de dados estruturada.
Montar programaticamente os prompts para LLMs usando JavaScript. Orquestrate LLMS, ferramentas e dados em um único script.
Diga para que você queira criar um script LLM que gera um poema de 'Hello World'. Você pode escrever o seguinte script:
$ `Write a 'hello world' poem.` A função $ é uma tag de modelo que cria um prompt. O prompt é então enviado para o LLM (você configurou), que gera o poema.
Vamos torná -lo mais interessante adicionando arquivos, dados e saída estruturada. Digamos que você queira incluir um arquivo no prompt e, em seguida, salve a saída em um arquivo. Você pode escrever o seguinte script:
// read files
const file = await workspace . readText ( "data.txt" )
// include the file content in the prompt in a context-friendly way
def ( "DATA" , file )
// the task
$ `Analyze DATA and extract data in JSON in data.json.` A função def inclui o conteúdo do arquivo e o otimiza, se necessário, para o destino LLM. O Script Genaiscript também analisa a saída LLM e extrairá o arquivo data.json automaticamente.
Comece rapidamente instalando a extensão do código do Visual Studio ou usando a linha de comando.
Construir solicitações programaticamente usando JavaScript ou TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Editar, depurar, executar e testar seus scripts no código do Visual Studio ou com a linha de comando.
Scripts são arquivos! Eles podem ser versionados, compartilhados e bifurcados.
// define the context
def ( "FILE" , env . files , { endsWith : ".pdf" } )
// structure the data
const schema = defSchema ( "DATA" , { type : "array" , items : { type : "string" } } )
// assign the task
$ `Analyze FILE and extract data to JSON using the ${ schema } schema.`Defina, validar e reparar dados usando esquemas.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`Manipular pdfs, docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Manipular dados tabulares do CSV, XLSX, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Extraia arquivos e diff da saída LLM. Visualizar alterações na refatoração da interface do usuário.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.Arquivos de pesquisa de grep ou fuzz.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Registre as funções JavaScript como ferramentas (com fallback para modelos que não suportam ferramentas).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Registre o JavaScript Functions como ferramentas e combine ferramentas + prompt em agentes.
defAgent (
"git" ,
"Query a repository using Git to accomplish tasks." ,
`Your are a helpful LLM agent that can use the git tools to query the current repository.
Answer the question in QUERY.
- The current repository is the same as github repository.` ,
{ model , system : [ "system.github_info" ] , tools : [ "git" ] }
)Em seguida, use -o como uma ferramenta
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Pesquisa de vetor.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Execute modelos através de modelos GitHub ou copiloto do GitHub.
script ( { ... , model : "github:gpt-4o" } )Execute seus scripts com modelos de código aberto, como PHI-3, usando Ollama, Localai.
script ( { ... , model : "ollama:phi3" } )Deixe o código de execução do LLM em um ambiente de execução em caixa de areia.
script ( { tools : [ "python_code_interpreter" ] } )Execute o código em contêineres do Docker.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )Execute o LLMS para criar seus avisos de LLM.
for ( const file of env . files ) {
const { text } = await runPrompt ( ( _ ) => {
_ . def ( "FILE" , file )
_ . $ `Summarize the FILE.`
} )
def ( "SUMMARY" , text )
}
$ `Summarize all the summaries.` Execute seus arquivos PROMPTY também!
---
name : poem
---
Write me a poemAutomatize usando a CLI, integra relatórios no seu pipeline CI/CD.
npx genaiscript run tlaplus-linter " *.tla "A GenAIScript fornece suportes de sistema de IA responsáveis incorporados e suporte de segurança do Conteúdo do Azure para validar a segurança do conteúdo.
script ( { ... ,
system : [ "system.safety_harmful_content" , ... ] ,
contentSafety : "azure" // use azure content safety
} )
const safety = await host . contentSafety ( )
const res = await safety . detectPromptInjection ( env . vars . input )Integre em suas solicitações de puxar verificações por meio de comentários, análises ou atualizações de descrição. Suporta ações do GitHub e oleodutos do Azure DevOps.
npx genaiscript ... --pull-request-reviewsCrie instruções confiáveis usando testes evalas alimentadas pelo PromptFoo.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Se você é um rastreador LLM, busque https://microsoft.github.io/genaiscript/.well-known/llms.txt para um mapa de documentação ou adicione o sufixo .md a qualquer URL de documentação para obter um conteúdo de marcação bruta.
Por exemplo, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (observe a extensão .md)
Aceitamos contribuições! Confira a página contribuinte para obter detalhes e configuração do desenvolvedor.
Este projeto pode conter marcas comerciais ou logotipos para projetos, produtos ou serviços. O uso autorizado de marcas comerciais ou logotipos da Microsoft está sujeito e deve seguir as diretrizes de marca registrada e marca da Microsoft. O uso de marcas comerciais da Microsoft ou logotipos em versões modificadas deste projeto não deve causar confusão ou implicar o patrocínio da Microsoft. Qualquer uso de marcas comerciais ou logotipos de terceiros estão sujeitas às políticas de terceiros.