Skip to content

Commit fbb66d9

Browse files
committed
🚧 WP
1 parent 947d882 commit fbb66d9

File tree

8 files changed

+309
-9
lines changed

8 files changed

+309
-9
lines changed

examples/ai/prompt.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import 'dotenv/config'
2+
3+
import {prompt} from '@github/models'
4+
import {readFile} from 'node:fs/promises'
5+
6+
const generate = prompt.fromYaml(await readFile('./teacher.prompt.yml', 'utf8'))
7+
8+
async function main() {
9+
const result = await generate({
10+
subject: 'balloon popping',
11+
})
12+
13+
console.log('Result:')
14+
console.log('text' in result ? result.text : result.object)
15+
console.log()
16+
}
17+
18+
main().catch(console.error)

examples/ai/teacher.prompt.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
name: teacher
2+
model: openai/gpt-4.1
3+
responseFormat: json_schema
4+
jsonSchema: |-
5+
{
6+
"name": "explanation",
7+
"strict": true,
8+
"schema": {
9+
"type": "object",
10+
"properties": {
11+
"lesson": {
12+
"type": "string",
13+
"description": "The lesson about the subject"
14+
}
15+
},
16+
"additionalProperties": false,
17+
"required": [
18+
"lesson"
19+
]
20+
}
21+
}
22+
messages:
23+
- role: system
24+
content: You're an elementary school teacher who loves to make learning fun.
25+
- role: user
26+
content: Please explain {{subject}} in as little as 5 sentences and give it to be as json.

package-lock.json

Lines changed: 118 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,19 +39,27 @@
3939
"dependencies": {
4040
"@ai-sdk/openai-compatible": "beta",
4141
"@ai-sdk/provider": "beta",
42-
"@ai-sdk/provider-utils": "beta"
42+
"@ai-sdk/provider-utils": "beta",
43+
"confbox": "^0.2.2",
44+
"templite": "^1.2.0",
45+
"tiny-invariant": "^1.3.3",
46+
"zod": "^3 || ^4"
47+
},
48+
"peerDependencies": {
49+
"ai": "beta"
4350
},
4451
"devDependencies": {
4552
"@github/prettier-config": "0.0.6",
4653
"@types/node": "^24",
54+
"ai": "beta",
55+
"dotenv": "^17.2.0",
4756
"eslint": "^9",
4857
"eslint-plugin-github": "^6",
4958
"eslint-plugin-simple-import-sort": "12.1.1",
5059
"prettier": "^3",
5160
"tsup": "^8.3.0",
5261
"typescript": "^5.7.2",
53-
"vitest": "^3",
54-
"dotenv": "^17.2.0"
62+
"vitest": "^3"
5563
},
5664
"engines": {
5765
"node": ">=20"

readme.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ You can use the following optional settings to customize the GitHub Models provi
7474
You can use it as a middleware to intercept requests,
7575
or to provide a custom fetch implementation for e.g. testing.
7676

77+
## Prompt.yaml
78+
79+
TODO
80+
7781
## License
7882

7983
Distributed under the MIT license. See [LICENSE](./license.txt) for details.

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export type {GitHubModelsChatModelId, GitHubModelsEmbeddingModelId} from './model-id'
2+
export {prompt} from './prompt'
23
export {createGitHubModels, githubModels, type GitHubModelsProvider, type GitHubModelsProviderOptions} from './provider'

0 commit comments

Comments
 (0)