Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 23 additions & 19 deletions js/plugins/dotprompt/src/registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export function registryDefinitionKey(name: string, variant?: string) {
}

export function registryLookupKey(name: string, variant?: string) {
return `prompt/${registryDefinitionKey(name, variant)}`;
return `/prompt/${registryDefinitionKey(name, variant)}`;
}

export async function lookupPrompt(
Expand Down Expand Up @@ -71,25 +71,29 @@ export async function loadPromptFolder(
): Promise<void> {
const promptsPath = resolve(dir);
return new Promise<void>((resolve, reject) => {
readdir(
promptsPath,
{
withFileTypes: true,
recursive: false,
},
(err, dirEnts) => {
if (err) {
reject(err);
} else {
dirEnts.forEach(async (dirEnt) => {
if (dirEnt.isFile() && dirEnt.name.endsWith('.prompt')) {
loadPrompt(dirEnt.path, dirEnt.name);
}
});
resolve();
if (existsSync(promptsPath)) {
readdir(
promptsPath,
{
withFileTypes: true,
recursive: false,
},
(err, dirEnts) => {
if (err) {
reject(err);
} else {
dirEnts.forEach(async (dirEnt) => {
if (dirEnt.isFile() && dirEnt.name.endsWith('.prompt')) {
loadPrompt(dirEnt.path, dirEnt.name);
}
});
resolve();
}
}
}
);
);
} else {
resolve();
}
});
}

Expand Down
16 changes: 14 additions & 2 deletions js/plugins/dotprompt/tests/prompt_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,21 @@ import assert from 'node:assert';
import { describe, it } from 'node:test';

import { defineModel } from '@genkit-ai/ai/model';
import z from 'zod';

import { toJsonSchema, ValidationError } from '@genkit-ai/core/schema';
import z from 'zod';
import { registerPluginProvider } from '../../../core/src/registry.js';
import { defineDotprompt, Dotprompt, prompt } from '../src/index.js';
import { PromptMetadata } from '../src/metadata.js';

function registerDotprompt() {
registerPluginProvider('dotprompt', {
name: 'dotprompt',
async initializer() {
return {};
},
});
}

const echo = defineModel(
{ name: 'echo', supports: { tools: true } },
async (input) => ({
Expand Down Expand Up @@ -62,6 +71,7 @@ describe('Prompt', () => {
});

it('rejects input not matching the schema', async () => {
registerDotprompt();
const invalidSchemaPrompt = defineDotprompt(
{
name: 'invalidInput',
Expand Down Expand Up @@ -90,6 +100,7 @@ describe('Prompt', () => {
});

it('rejects input not matching the schema', async () => {
registerDotprompt();
const invalidSchemaPrompt = defineDotprompt(
{
name: 'invalidInput',
Expand Down Expand Up @@ -176,6 +187,7 @@ output:

describe('definePrompt', () => {
it('registers a prompt and its variant', async () => {
registerDotprompt();
defineDotprompt(
{
name: 'promptName',
Expand Down
2 changes: 2 additions & 0 deletions js/samples/byo-evaluator/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import { EvaluatorAction } from '@genkit-ai/ai';
import { ModelReference } from '@genkit-ai/ai/model';
import { configureGenkit, genkitPlugin, PluginProvider } from '@genkit-ai/core';
import { dotprompt } from '@genkit-ai/dotprompt';
import { firebase } from '@genkit-ai/firebase';
import { geminiPro, googleAI } from '@genkit-ai/googleai';
import * as z from 'zod';
Expand All @@ -42,6 +43,7 @@ import {

configureGenkit({
plugins: [
dotprompt(),
firebase(),
googleAI({ apiVersion: ['v1', 'v1beta'] }),
byoEval({
Expand Down
2 changes: 2 additions & 0 deletions js/samples/cat-eval/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import { configureGenkit } from '@genkit-ai/core';
import { devLocalVectorstore } from '@genkit-ai/dev-local-vectorstore';
import { dotprompt } from '@genkit-ai/dotprompt';
import { genkitEval, GenkitMetric } from '@genkit-ai/evaluator';
import { firebase } from '@genkit-ai/firebase';
import { geminiPro, googleAI } from '@genkit-ai/googleai';
Expand Down Expand Up @@ -46,6 +47,7 @@ export const PERMISSIVE_SAFETY_SETTINGS: any = {

configureGenkit({
plugins: [
dotprompt(),
firebase(),
googleAI(),
genkitEval({
Expand Down
8 changes: 6 additions & 2 deletions js/samples/coffee-shop/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,18 @@
*/

import { configureGenkit } from '@genkit-ai/core';
import { defineDotprompt } from '@genkit-ai/dotprompt';
import { defineDotprompt, dotprompt } from '@genkit-ai/dotprompt';
import { firebase } from '@genkit-ai/firebase';
import { defineFlow, runFlow } from '@genkit-ai/flow';
import googleAI, { geminiPro } from '@genkit-ai/googleai';
import * as z from 'zod';

configureGenkit({
plugins: [googleAI({ apiVersion: ['v1', 'v1beta'] }), firebase()],
plugins: [
googleAI({ apiVersion: ['v1', 'v1beta'] }),
firebase(),
dotprompt(),
],
enableTracingAndMetrics: true,
flowStateStore: 'firebase',
logLevel: 'debug',
Expand Down
3 changes: 2 additions & 1 deletion js/samples/menu-example/basic/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@
// both.
import { generate } from '@genkit-ai/ai';
import { configureGenkit } from '@genkit-ai/core';
import { dotprompt } from '@genkit-ai/dotprompt';
import { defineFlow, startFlowsServer } from '@genkit-ai/flow';
import { geminiPro, googleAI } from '@genkit-ai/googleai';
import * as z from 'zod';

configureGenkit({
plugins: [googleAI()],
plugins: [googleAI(), dotprompt()],
logLevel: 'debug',
enableTracingAndMetrics: true,
});
Expand Down
4 changes: 2 additions & 2 deletions js/samples/prompt-file/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@
*/

import { configureGenkit } from '@genkit-ai/core';
import { prompt } from '@genkit-ai/dotprompt';
import { dotprompt, prompt } from '@genkit-ai/dotprompt';
import { defineFlow } from '@genkit-ai/flow';
import { googleAI } from '@genkit-ai/googleai';
import * as z from 'zod';

configureGenkit({
plugins: [googleAI()],
plugins: [googleAI(), dotprompt()],
enableTracingAndMetrics: true,
logLevel: 'debug',
});
Expand Down
2 changes: 2 additions & 0 deletions js/samples/rag/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

import { configureGenkit } from '@genkit-ai/core';
import { devLocalVectorstore } from '@genkit-ai/dev-local-vectorstore';
import { dotprompt } from '@genkit-ai/dotprompt';
import { genkitEval, GenkitMetric } from '@genkit-ai/evaluator';
import { firebase } from '@genkit-ai/firebase';
import { googleAI } from '@genkit-ai/googleai';
Expand All @@ -31,6 +32,7 @@ import { pinecone } from 'genkitx-pinecone';

export default configureGenkit({
plugins: [
dotprompt(),
firebase(),
googleAI({ apiVersion: ['v1', 'v1beta'] }),
genkitEval({
Expand Down