Patch model selection for openai (#1128)

prevent rerenders of web-browsing for agents
update openai latest pkg name
This commit is contained in:
Timothy Carambat 2024-04-18 13:32:50 -07:00 committed by GitHub
parent 9655880cf0
commit 91ea37d17a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 124 additions and 104 deletions

View File

@ -2,6 +2,20 @@ import useGetProviderModels, {
DISABLED_PROVIDERS, DISABLED_PROVIDERS,
} from "@/hooks/useGetProvidersModels"; } from "@/hooks/useGetProvidersModels";
// These models do NOT support function calling
function supportedModel(provider, model = "") {
if (provider !== "openai") return true;
if (model.startsWith("gpt-3.5-turbo")) return true;
switch (model) {
case "gpt-4":
case "gpt-4-turbo-preview":
case "gpt-4-32k":
return true;
default:
return false;
}
}
export default function AgentModelSelection({ export default function AgentModelSelection({
provider, provider,
workspace, workspace,
@ -60,6 +74,7 @@ export default function AgentModelSelection({
{defaultModels.length > 0 && ( {defaultModels.length > 0 && (
<optgroup label="General models"> <optgroup label="General models">
{defaultModels.map((model) => { {defaultModels.map((model) => {
if (!supportedModel(provider, model)) return null;
return ( return (
<option <option
key={model} key={model}
@ -75,6 +90,8 @@ export default function AgentModelSelection({
{Array.isArray(customModels) && customModels.length > 0 && ( {Array.isArray(customModels) && customModels.length > 0 && (
<optgroup label="Custom models"> <optgroup label="Custom models">
{customModels.map((model) => { {customModels.map((model) => {
if (!supportedModel(provider, model.id)) return null;
return ( return (
<option <option
key={model.id} key={model.id}
@ -93,15 +110,18 @@ export default function AgentModelSelection({
<> <>
{Object.entries(customModels).map(([organization, models]) => ( {Object.entries(customModels).map(([organization, models]) => (
<optgroup key={organization} label={organization}> <optgroup key={organization} label={organization}>
{models.map((model) => ( {models.map((model) => {
<option if (!supportedModel(provider, model.id)) return null;
key={model.id} return (
value={model.id} <option
selected={workspace?.agentModel === model.id} key={model.id}
> value={model.id}
{model.name} selected={workspace?.agentModel === model.id}
</option> >
))} {model.name}
</option>
);
})}
</optgroup> </optgroup>
))} ))}
</> </>

View File

@ -112,92 +112,92 @@ export default function WorkspaceAgentConfiguration({ workspace }) {
</form> </form>
</div> </div>
); );
}
function LoadingSkeleton() {
return ( function LoadingSkeleton() {
<div id="workspace-agent-settings-container"> return (
<div className="w-1/2 flex flex-col gap-y-6"> <div id="workspace-agent-settings-container">
<Skeleton.default <div className="w-1/2 flex flex-col gap-y-6">
height={100} <Skeleton.default
width="100%" height={100}
count={2} width="100%"
baseColor="#292524" count={2}
highlightColor="#4c4948" baseColor="#292524"
enableAnimation={true} highlightColor="#4c4948"
containerClassName="flex flex-col gap-y-1" enableAnimation={true}
/> containerClassName="flex flex-col gap-y-1"
<div className="bg-white/10 h-[1px] w-full" /> />
<Skeleton.default <div className="bg-white/10 h-[1px] w-full" />
height={100} <Skeleton.default
width="100%" height={100}
count={2} width="100%"
baseColor="#292524" count={2}
highlightColor="#4c4948" baseColor="#292524"
enableAnimation={true} highlightColor="#4c4948"
containerClassName="flex flex-col gap-y-1 mt-4" enableAnimation={true}
/> containerClassName="flex flex-col gap-y-1 mt-4"
</div> />
</div> </div>
); </div>
} );
}
function AvailableAgentSkills({ skills, settings, toggleAgentSkill }) {
return ( function AvailableAgentSkills({ skills, settings, toggleAgentSkill }) {
<div> return (
<div className="flex flex-col mb-8"> <div>
<div className="flex w-full justify-between items-center"> <div className="flex flex-col mb-8">
<label htmlFor="name" className="text-white text-md font-semibold"> <div className="flex w-full justify-between items-center">
Default agent skills <label htmlFor="name" className="text-white text-md font-semibold">
</label> Default agent skills
</div> </label>
<p className="text-white text-opacity-60 text-xs font-medium py-1.5"> </div>
Improve the natural abilities of the default agent with these <p className="text-white text-opacity-60 text-xs font-medium py-1.5">
pre-built skills. This set up applies to all workspaces. Improve the natural abilities of the default agent with these
</p> pre-built skills. This set up applies to all workspaces.
</div> </p>
<input </div>
name="system::default_agent_skills" <input
type="hidden" name="system::default_agent_skills"
value={skills.join(",")} type="hidden"
/> value={skills.join(",")}
<div className="flex flex-col gap-y-3"> />
<GenericSkill <div className="flex flex-col gap-y-3">
title="RAG & long-term memory" <GenericSkill
description='Allow the agent to leverage your local documents to answer a query or ask the agent to "remember" pieces of content for long-term memory retrieval.' title="RAG & long-term memory"
settings={settings} description='Allow the agent to leverage your local documents to answer a query or ask the agent to "remember" pieces of content for long-term memory retrieval.'
enabled={true} settings={settings}
disabled={true} enabled={true}
/> disabled={true}
<GenericSkill />
title="View and summarize documents" <GenericSkill
description="Allow the agent to list and summarize the content of workspace files currently embedded." title="View and summarize documents"
settings={settings} description="Allow the agent to list and summarize the content of workspace files currently embedded."
enabled={true} settings={settings}
disabled={true} enabled={true}
/> disabled={true}
<GenericSkill />
title="Scrape websites" <GenericSkill
description="Allow the agent to visit and scrape the content of websites." title="Scrape websites"
settings={settings} description="Allow the agent to visit and scrape the content of websites."
enabled={true} settings={settings}
disabled={true} enabled={true}
/> disabled={true}
<GenericSkill />
title="Generate & save files to browser" <GenericSkill
description="Enable the default agent to generate and write to files that save and can be downloaded in your browser." title="Generate & save files to browser"
skill="save-file-to-browser" description="Enable the default agent to generate and write to files that save and can be downloaded in your browser."
settings={settings} skill="save-file-to-browser"
toggleSkill={toggleAgentSkill} settings={settings}
enabled={skills.includes("save-file-to-browser")} toggleSkill={toggleAgentSkill}
/> enabled={skills.includes("save-file-to-browser")}
<AgentWebSearchSelection />
skill="web-browsing" <AgentWebSearchSelection
settings={settings} skill="web-browsing"
toggleSkill={toggleAgentSkill} settings={settings}
enabled={skills.includes("web-browsing")} toggleSkill={toggleAgentSkill}
/> enabled={skills.includes("web-browsing")}
</div> />
</div> </div>
); </div>
} );
} }

View File

@ -53,7 +53,7 @@
"node-html-markdown": "^1.3.0", "node-html-markdown": "^1.3.0",
"node-llama-cpp": "^2.8.0", "node-llama-cpp": "^2.8.0",
"openai": "^3.2.1", "openai": "^3.2.1",
"openai:latest": "npm:openai@latest", "openai-latest": "npm:openai@latest",
"pinecone-client": "^1.1.0", "pinecone-client": "^1.1.0",
"pluralize": "^8.0.0", "pluralize": "^8.0.0",
"posthog-node": "^3.1.1", "posthog-node": "^3.1.1",
@ -84,4 +84,4 @@
"nodemon": "^2.0.22", "nodemon": "^2.0.22",
"prettier": "^3.0.3" "prettier": "^3.0.3"
} }
} }

View File

@ -1,4 +1,4 @@
const OpenAI = require("openai:latest"); const OpenAI = require("openai-latest");
const Provider = require("./ai-provider.js"); const Provider = require("./ai-provider.js");
const { RetryError } = require("../error.js"); const { RetryError } = require("../error.js");

View File

@ -4495,10 +4495,10 @@ onnxruntime-web@1.14.0:
onnxruntime-common "~1.14.0" onnxruntime-common "~1.14.0"
platform "^1.3.6" platform "^1.3.6"
"openai:latest@npm:openai@latest": "openai-latest@npm:openai@latest":
version "4.32.1" version "4.38.0"
resolved "https://registry.yarnpkg.com/openai/-/openai-4.32.1.tgz#9e375fdbc727330c5ea5d287beb325db3e6f9ad7" resolved "https://registry.yarnpkg.com/openai/-/openai-4.38.0.tgz#d97accc7c368670a40c2f668650b624cb941dc8b"
integrity sha512-3e9QyCY47tgOkxBe2CSVKlXOE2lLkMa24Y0s3LYZR40yYjiBU9dtVze+C3mu1TwWDGiRX52STpQAEJZvRNuIrA== integrity sha512-q1w04cRm+7CgUAGDXqt+OMa89zXBffHrEK0FcVDRhD+zL1S1aAatu4iYO5sIxR2QFEP//i8CM3QaxGVTNajxuw==
dependencies: dependencies:
"@types/node" "^18.11.18" "@types/node" "^18.11.18"
"@types/node-fetch" "^2.6.4" "@types/node-fetch" "^2.6.4"