-

+
@@ -53,7 +54,7 @@
chat.contoso.com
-
@@ -64,7 +65,7 @@
chat.contoso.com
-
+
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/package.json b/src/ai/.x/templates/openai-asst-webpage-js/package.json
index ba672518..b534215f 100644
--- a/src/ai/.x/templates/openai-asst-webpage-js/package.json
+++ b/src/ai/.x/templates/openai-asst-webpage-js/package.json
@@ -5,7 +5,9 @@
"main": "script.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
- "webpack": "webpack"
+ "start": "vite",
+ "build": "vite build",
+ "preview": "vite preview"
},
"author": "",
"license": "MIT",
@@ -17,8 +19,6 @@
},
"keywords": [],
"devDependencies": {
- "dotenv-webpack": "^7.0.3",
- "webpack": "^5.89.0",
- "webpack-cli": "^5.1.4"
+ "vite": "^5.2.8"
}
-}
+}
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/src/CreateOpenAI.js b/src/ai/.x/templates/openai-asst-webpage-js/src/CreateOpenAI.js
index 24c2a97c..bb5d8f43 100644
--- a/src/ai/.x/templates/openai-asst-webpage-js/src/CreateOpenAI.js
+++ b/src/ai/.x/templates/openai-asst-webpage-js/src/CreateOpenAI.js
@@ -1,8 +1,8 @@
-const { InteractiveBrowserCredential } = require('@azure/identity');
-const { OpenAIEnvInfo } = require('./OpenAIEnvInfo');
-const { OpenAI } = require('openai');
+import { InteractiveBrowserCredential } from '@azure/identity';
+import { OpenAIEnvInfo } from './OpenAIEnvInfo';
+import { OpenAI } from 'openai';
-class CreateOpenAI {
+export class CreateOpenAI {
static async forAssistantsAPI({ dangerouslyAllowBrowser, errorCallback } = {}) {
return this.forAPI({ api: 'assistants', dangerouslyAllowBrowser, errorCallback });
@@ -120,5 +120,3 @@ class CreateOpenAI {
return token.token;
}
}
-
-exports.CreateOpenAI = CreateOpenAI;
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIAssistantsStreamingClass.js b/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIAssistantsStreamingClass.js
index fd654d33..004bdf08 100644
--- a/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIAssistantsStreamingClass.js
+++ b/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIAssistantsStreamingClass.js
@@ -1,9 +1,7 @@
<#@ template hostspecific="true" #>
<#@ output extension=".js" encoding="utf-8" #>
<#@ parameter type="System.String" name="ClassName" #>
-const { OpenAI } = require('openai');
-
-class <#= ClassName #> {
+export class <#= ClassName #> {
// Constructor
constructor(openAIAssistantId, openai, simulateTypingDelay = 0) {
@@ -22,7 +20,7 @@ class <#= ClassName #> {
// Retrieve an existing thread
async retrieveThread(threadId) {
- this.thread =await this.openai.beta.threads.retrieve(threadId);
+ this.thread = await this.openai.beta.threads.retrieve(threadId);
console.log(`Thread ID: ${this.thread.id}`);
return this.thread;
}
@@ -87,5 +85,4 @@ class <#= ClassName #> {
}
}
}
-
-exports.<#= ClassName #> = <#= ClassName #>;
\ No newline at end of file
+
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIEnvInfo.js b/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIEnvInfo.js
index 6849cc86..18d1f0c2 100644
--- a/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIEnvInfo.js
+++ b/src/ai/.x/templates/openai-asst-webpage-js/src/OpenAIEnvInfo.js
@@ -8,26 +8,25 @@
<#@ parameter type="System.String" name="AZURE_OPENAI_SYSTEM_PROMPT" #>
<#@ parameter type="System.String" name="OPENAI_API_KEY" #>
<#@ parameter type="System.String" name="OPENAI_MODEL_NAME" #>
-class OpenAIEnvInfo {
-
+export class OpenAIEnvInfo {
// NOTE: Never deploy your key in client-side environments like browsers or mobile apps
// SEE: https://help.openai.com/en/articles/5112595-best-practices-for-api-key-safety
- static ASSISTANT_ID = process.env.ASSISTANT_ID ?? "<#= ASSISTANT_ID #>";
+ static ASSISTANT_ID = import.meta.env.ASSISTANT_ID ?? "
";
- static AZURE_CLIENT_ID = process.env.AZURE_CLIENT_ID ?? null;
- static AZURE_TENANT_ID = process.env.AZURE_TENANT_ID ?? null;
+ static AZURE_CLIENT_ID = import.meta.env.AZURE_CLIENT_ID ?? null;
+ static AZURE_TENANT_ID = import.meta.env.AZURE_TENANT_ID ?? null;
- static AZURE_OPENAI_API_KEY = process.env.AZURE_OPENAI_API_KEY ?? "<#= AZURE_OPENAI_API_KEY #>";
- static AZURE_OPENAI_API_VERSION = process.env.AZURE_OPENAI_API_VERSION ?? "<#= AZURE_OPENAI_API_VERSION #>";
- static AZURE_OPENAI_ENDPOINT = process.env.AZURE_OPENAI_ENDPOINT ?? "<#= AZURE_OPENAI_ENDPOINT #>";
- static AZURE_OPENAI_CHAT_DEPLOYMENT = process.env.AZURE_OPENAI_CHAT_DEPLOYMENT ?? "<#= AZURE_OPENAI_CHAT_DEPLOYMENT #>";
+ static AZURE_OPENAI_API_KEY = import.meta.env.AZURE_OPENAI_API_KEY ?? "";
+ static AZURE_OPENAI_API_VERSION = import.meta.env.AZURE_OPENAI_API_VERSION ?? "";
+ static AZURE_OPENAI_ENDPOINT = import.meta.env.AZURE_OPENAI_ENDPOINT ?? "";
+ static AZURE_OPENAI_CHAT_DEPLOYMENT = import.meta.env.AZURE_OPENAI_CHAT_DEPLOYMENT ?? "";
- static AZURE_OPENAI_SYSTEM_PROMPT = process.env.AZURE_OPENAI_SYSTEM_PROMPT ?? "<#= AZURE_OPENAI_SYSTEM_PROMPT #>";
+ static AZURE_OPENAI_SYSTEM_PROMPT = import.meta.env.AZURE_OPENAI_SYSTEM_PROMPT ?? "You are a helpful AI assistant.";
- static OPENAI_API_KEY = process.env.OPENAI_API_KEY ?? "<#= OPENAI_API_KEY #>";
- static OPENAI_ORG_ID = process.env.OPENAI_ORG_ID ?? null;
- static OPENAI_MODEL_NAME = process.env.OPENAI_MODEL_NAME ?? "<#= OPENAI_MODEL_NAME #>";
+ static OPENAI_API_KEY = import.meta.env.OPENAI_API_KEY ?? "";
+ static OPENAI_ORG_ID = import.meta.env.OPENAI_ORG_ID ?? null;
+ static OPENAI_MODEL_NAME = import.meta.env.OPENAI_MODEL_NAME ?? "";
static isConnectionInfoOk(errorCallback) {
const ok = this.isAzureAADConnectionInfoOk() || this.isAzureKeyConnectionInfoOk() || this.isOpenAIConnectionInfoOk();
@@ -70,6 +69,4 @@ class OpenAIEnvInfo {
}
return true;
}
-}
-
-exports.OpenAIEnvInfo = OpenAIEnvInfo;
+}
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/src/script.js b/src/ai/.x/templates/openai-asst-webpage-js/src/script.js
index d1bccbe8..c932ca5d 100644
--- a/src/ai/.x/templates/openai-asst-webpage-js/src/script.js
+++ b/src/ai/.x/templates/openai-asst-webpage-js/src/script.js
@@ -1,12 +1,12 @@
<#@ template hostspecific="true" #>
<#@ output extension=".js" encoding="utf-8" #>
<#@ parameter type="System.String" name="ClassName" #>
-const marked = require("marked");
-const hljs = require("highlight.js");
+import * as marked from "marked";
+import * as hljs from "highlight.js";
-const { CreateOpenAI } = require("./CreateOpenAI");
-const { OpenAIEnvInfo } = require("./OpenAIEnvInfo");
-const { <#= ClassName #> } = require("./OpenAIAssistantsStreamingClass");
+import { CreateOpenAI } from "./CreateOpenAI";
+import { OpenAIEnvInfo } from "./OpenAIEnvInfo";
+import { <#= ClassName #> } from "./OpenAIAssistantsStreamingClass";
let assistant;
async function assistantInit(threadId = null) {
@@ -484,10 +484,8 @@ async function init() {
userInputTextAreaFocus();
- window.newChat = newChat;
- window.loadThread = loadThread;
- window.sendMessage = sendMessage;
- window.toggleTheme = toggleTheme;
+ document.querySelector('#sendButton').addEventListener('click', sendMessage);
+ document.querySelector('#newChatButton').addEventListener('click', newChat);
}
-init();
\ No newline at end of file
+window.addEventListener('DOMContentLoaded', init);
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/vite.config.js b/src/ai/.x/templates/openai-asst-webpage-js/vite.config.js
new file mode 100644
index 00000000..0e35e81e
--- /dev/null
+++ b/src/ai/.x/templates/openai-asst-webpage-js/vite.config.js
@@ -0,0 +1,3 @@
+export default {
+ envPrefix: ["ASSISTANT_ID", "AZURE_", "OPENAI_"],
+};
\ No newline at end of file
diff --git a/src/ai/.x/templates/openai-asst-webpage-js/webpack.config.js b/src/ai/.x/templates/openai-asst-webpage-js/webpack.config.js
deleted file mode 100644
index 154fbff8..00000000
--- a/src/ai/.x/templates/openai-asst-webpage-js/webpack.config.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const path = require('path');
-const webpack = require('webpack');
-const Dotenv = require('dotenv-webpack');
-
-module.exports = {
- mode: 'development',
- entry: './src/script.js',
- output: {
- filename: 'main.js',
- path: path.resolve(__dirname, 'dist'),
- },
- plugins: [
- new Dotenv(),
- new webpack.DefinePlugin({
- 'process.env.ASSISTANT_ID': JSON.stringify(process.env.ASSISTANT_ID),
- 'process.env.AZURE_CLIENT_ID': JSON.stringify(process.env.AZURE_CLIENT_ID),
- 'process.env.AZURE_TENANT_ID': JSON.stringify(process.env.AZURE_TENANT_ID),
- 'process.env.AZURE_OPENAI_API_KEY': JSON.stringify(process.env.AZURE_OPENAI_API_KEY),
- 'process.env.AZURE_OPENAI_API_VERSION': JSON.stringify(process.env.AZURE_OPENAI_API_VERSION),
- 'process.env.AZURE_OPENAI_ENDPOINT': JSON.stringify(process.env.AZURE_OPENAI_ENDPOINT),
- 'process.env.AZURE_OPENAI_CHAT_DEPLOYMENT': JSON.stringify(process.env.AZURE_OPENAI_CHAT_DEPLOYMENT),
- 'process.env.OPENAI_API_KEY': JSON.stringify(process.env.OPENAI_API_KEY),
- 'process.env.OPENAI_ORG_ID': JSON.stringify(process.env.OPENAI_ORG_ID),
- 'process.env.OPENAI_MODEL_NAME': JSON.stringify(process.env.OPENAI_MODEL_NAME),
- }),
- ],
-};
\ No newline at end of file