Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e5b826567d | |||
| 4738a2d212 | |||
| afaedf6677 | |||
| 78d6b91d0b | |||
| 1a66a5968c | |||
| efbbaa2667 | |||
| a57b52eccd |
@@ -14,16 +14,24 @@ your actions.
|
||||
Create a workflow to use the AI inference action:
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
- name: Test Local Action
|
||||
id: inference
|
||||
uses: actions/ai-inference@v1
|
||||
with:
|
||||
prompt: 'Hello!'
|
||||
name: 'AI inference'
|
||||
on: workflow_dispatch
|
||||
|
||||
- name: Print Output
|
||||
id: output
|
||||
run: echo "${{ steps.test-action.outputs.response }}"
|
||||
jobs:
|
||||
inference:
|
||||
permissions:
|
||||
models: read
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Test Local Action
|
||||
id: inference
|
||||
uses: actions/ai-inference@v1
|
||||
with:
|
||||
prompt: 'Hello!'
|
||||
|
||||
- name: Print Output
|
||||
id: output
|
||||
run: echo "${{ steps.inference.outputs.response }}"
|
||||
```
|
||||
|
||||
## Inputs
|
||||
|
||||
+2
-2
@@ -4,7 +4,7 @@ author: 'GitHub'
|
||||
|
||||
# Add your action's branding here. This will appear on the GitHub Marketplace.
|
||||
branding:
|
||||
icon: 'play-circle'
|
||||
icon: 'message-square'
|
||||
color: red
|
||||
|
||||
# Define your inputs here.
|
||||
@@ -16,7 +16,7 @@ inputs:
|
||||
model:
|
||||
description: The model to use
|
||||
required: false
|
||||
default: 'gpt-4o'
|
||||
default: 'openai/gpt-4o'
|
||||
endpoint:
|
||||
description: The endpoint to use
|
||||
required: false
|
||||
|
||||
+1
-1
@@ -1 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="116" height="20" role="img" aria-label="Coverage: 89.47%"><title>Coverage: 89.47%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="116" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="53" height="20" fill="#dfb317"/><rect width="116" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">89.47%</text><text x="885" y="140" transform="scale(.1)" fill="#fff" textLength="430">89.47%</text></g></svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="116" height="20" role="img" aria-label="Coverage: 76.92%"><title>Coverage: 76.92%</title><linearGradient id="s" x2="0" y2="100%"><stop offset="0" stop-color="#bbb" stop-opacity=".1"/><stop offset="1" stop-opacity=".1"/></linearGradient><clipPath id="r"><rect width="116" height="20" rx="3" fill="#fff"/></clipPath><g clip-path="url(#r)"><rect width="63" height="20" fill="#555"/><rect x="63" width="53" height="20" fill="#e05d44"/><rect width="116" height="20" fill="url(#s)"/></g><g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif" text-rendering="geometricPrecision" font-size="110"><text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="530">Coverage</text><text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text><text aria-hidden="true" x="885" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)" textLength="430">76.92%</text><text x="885" y="140" transform="scale(.1)" fill="#fff" textLength="430">76.92%</text></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
+20
-3
@@ -33566,7 +33566,14 @@ async function run() {
|
||||
if (token === undefined) {
|
||||
throw new Error('GITHUB_TOKEN is not set');
|
||||
}
|
||||
const endpoint = coreExports.getInput('endpoint');
|
||||
let endpoint = coreExports.getInput('endpoint');
|
||||
// If we're in an org-owned repository, we should use the org-owned endpoint
|
||||
const repoOwner = process.env.GITHUB_REPOSITORY_OWNER;
|
||||
const ownerType = process.env.GITHUB_REPOSITORY_OWNER_TYPE;
|
||||
if (endpoint == 'https://models.github.ai/inference' &&
|
||||
ownerType == 'Organization') {
|
||||
endpoint = `https://models.github.ai/${repoOwner}/inference`;
|
||||
}
|
||||
const client = createClient(endpoint, new AzureKeyCredential(token));
|
||||
const response = await client.path('/chat/completions').post({
|
||||
body: {
|
||||
@@ -33584,7 +33591,13 @@ async function run() {
|
||||
}
|
||||
});
|
||||
if (isUnexpected(response)) {
|
||||
throw response.body.error;
|
||||
if (response.body.error) {
|
||||
throw response.body.error;
|
||||
}
|
||||
throw new Error('An error occurred while fetching the response (' +
|
||||
response.status +
|
||||
'): ' +
|
||||
response.body);
|
||||
}
|
||||
const modelResponse = response.body.choices[0].message.content;
|
||||
// Set outputs for other workflow steps to use
|
||||
@@ -33592,8 +33605,12 @@ async function run() {
|
||||
}
|
||||
catch (error) {
|
||||
// Fail the workflow run if an error occurs
|
||||
if (error instanceof Error)
|
||||
if (error instanceof Error) {
|
||||
coreExports.setFailed(error.message);
|
||||
}
|
||||
else {
|
||||
coreExports.setFailed('An unexpected error occurred');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
File diff suppressed because one or more lines are too long
+26
-3
@@ -22,7 +22,18 @@ export async function run(): Promise<void> {
|
||||
if (token === undefined) {
|
||||
throw new Error('GITHUB_TOKEN is not set')
|
||||
}
|
||||
const endpoint = core.getInput('endpoint')
|
||||
|
||||
let endpoint = core.getInput('endpoint')
|
||||
|
||||
// If we're in an org-owned repository, we should use the org-owned endpoint
|
||||
const repoOwner = process.env.GITHUB_REPOSITORY_OWNER
|
||||
const ownerType = process.env.GITHUB_REPOSITORY_OWNER_TYPE
|
||||
if (
|
||||
endpoint == 'https://models.github.ai/inference' &&
|
||||
ownerType == 'Organization'
|
||||
) {
|
||||
endpoint = `https://models.github.ai/${repoOwner}/inference`
|
||||
}
|
||||
|
||||
const client = ModelClient(endpoint, new AzureKeyCredential(token))
|
||||
|
||||
@@ -43,7 +54,15 @@ export async function run(): Promise<void> {
|
||||
})
|
||||
|
||||
if (isUnexpected(response)) {
|
||||
throw response.body.error
|
||||
if (response.body.error) {
|
||||
throw response.body.error
|
||||
}
|
||||
throw new Error(
|
||||
'An error occurred while fetching the response (' +
|
||||
response.status +
|
||||
'): ' +
|
||||
response.body
|
||||
)
|
||||
}
|
||||
|
||||
const modelResponse: string | null =
|
||||
@@ -53,6 +72,10 @@ export async function run(): Promise<void> {
|
||||
core.setOutput('response', modelResponse || '')
|
||||
} catch (error) {
|
||||
// Fail the workflow run if an error occurs
|
||||
if (error instanceof Error) core.setFailed(error.message)
|
||||
if (error instanceof Error) {
|
||||
core.setFailed(error.message)
|
||||
} else {
|
||||
core.setFailed('An unexpected error occurred')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user