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,
} 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({
provider,
workspace,
@ -60,6 +74,7 @@ export default function AgentModelSelection({
{defaultModels.length > 0 && (
<optgroup label="General models">
{defaultModels.map((model) => {
if (!supportedModel(provider, model)) return null;
return (
<option
key={model}
@ -75,6 +90,8 @@ export default function AgentModelSelection({
{Array.isArray(customModels) && customModels.length > 0 && (
<optgroup label="Custom models">
{customModels.map((model) => {
if (!supportedModel(provider, model.id)) return null;
return (
<option
key={model.id}
@ -93,15 +110,18 @@ export default function AgentModelSelection({
<>
{Object.entries(customModels).map(([organization, models]) => (
<optgroup key={organization} label={organization}>
{models.map((model) => (
<option
key={model.id}
value={model.id}
selected={workspace?.agentModel === model.id}
>
{model.name}
</option>
))}
{models.map((model) => {
if (!supportedModel(provider, model.id)) return null;
return (
<option
key={model.id}
value={model.id}
selected={workspace?.agentModel === model.id}
>
{model.name}
</option>
);
})}
</optgroup>
))}
</>

View File

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

View File

@ -53,7 +53,7 @@
"node-html-markdown": "^1.3.0",
"node-llama-cpp": "^2.8.0",
"openai": "^3.2.1",
"openai:latest": "npm:openai@latest",
"openai-latest": "npm:openai@latest",
"pinecone-client": "^1.1.0",
"pluralize": "^8.0.0",
"posthog-node": "^3.1.1",
@ -84,4 +84,4 @@
"nodemon": "^2.0.22",
"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 { RetryError } = require("../error.js");

View File

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