mirror of
https://gitea.toothfairyai.com/ToothFairyAI/tf_code.git
synced 2026-04-18 06:34:50 +00:00
tweak: adjust codex plugin logic so that codex instruction isn't always added (oauth plan no longer enforces instruction whitelisting) (#18337)
This commit is contained in:
@@ -322,11 +322,11 @@ export namespace Agent {
|
|||||||
}),
|
}),
|
||||||
} satisfies Parameters<typeof generateObject>[0]
|
} satisfies Parameters<typeof generateObject>[0]
|
||||||
|
|
||||||
|
// TODO: clean this up so provider specific logic doesnt bleed over
|
||||||
if (defaultModel.providerID === "openai" && (await Auth.get(defaultModel.providerID))?.type === "oauth") {
|
if (defaultModel.providerID === "openai" && (await Auth.get(defaultModel.providerID))?.type === "oauth") {
|
||||||
const result = streamObject({
|
const result = streamObject({
|
||||||
...params,
|
...params,
|
||||||
providerOptions: ProviderTransform.providerOptions(model, {
|
providerOptions: ProviderTransform.providerOptions(model, {
|
||||||
instructions: SystemPrompt.instructions(),
|
|
||||||
store: false,
|
store: false,
|
||||||
}),
|
}),
|
||||||
onError: () => {},
|
onError: () => {},
|
||||||
|
|||||||
@@ -63,14 +63,14 @@ export namespace LLM {
|
|||||||
Provider.getProvider(input.model.providerID),
|
Provider.getProvider(input.model.providerID),
|
||||||
Auth.get(input.model.providerID),
|
Auth.get(input.model.providerID),
|
||||||
])
|
])
|
||||||
const isCodex = provider.id === "openai" && auth?.type === "oauth"
|
// TODO: move this to a proper hook
|
||||||
|
const isOpenaiOauth = provider.id === "openai" && auth?.type === "oauth"
|
||||||
|
|
||||||
const system = []
|
const system: string[] = []
|
||||||
system.push(
|
system.push(
|
||||||
[
|
[
|
||||||
// use agent prompt otherwise provider prompt
|
// use agent prompt otherwise provider prompt
|
||||||
// For Codex sessions, skip SystemPrompt.provider() since it's sent via options.instructions
|
...(input.agent.prompt ? [input.agent.prompt] : SystemPrompt.provider(input.model)),
|
||||||
...(input.agent.prompt ? [input.agent.prompt] : isCodex ? [] : SystemPrompt.provider(input.model)),
|
|
||||||
// any custom prompt passed into this call
|
// any custom prompt passed into this call
|
||||||
...input.system,
|
...input.system,
|
||||||
// any custom prompt from last user message
|
// any custom prompt from last user message
|
||||||
@@ -108,10 +108,22 @@ export namespace LLM {
|
|||||||
mergeDeep(input.agent.options),
|
mergeDeep(input.agent.options),
|
||||||
mergeDeep(variant),
|
mergeDeep(variant),
|
||||||
)
|
)
|
||||||
if (isCodex) {
|
if (isOpenaiOauth) {
|
||||||
options.instructions = SystemPrompt.instructions()
|
options.instructions = system.join("\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const messages = isOpenaiOauth
|
||||||
|
? input.messages
|
||||||
|
: [
|
||||||
|
...system.map(
|
||||||
|
(x): ModelMessage => ({
|
||||||
|
role: "system",
|
||||||
|
content: x,
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
...input.messages,
|
||||||
|
]
|
||||||
|
|
||||||
const params = await Plugin.trigger(
|
const params = await Plugin.trigger(
|
||||||
"chat.params",
|
"chat.params",
|
||||||
{
|
{
|
||||||
@@ -146,7 +158,9 @@ export namespace LLM {
|
|||||||
)
|
)
|
||||||
|
|
||||||
const maxOutputTokens =
|
const maxOutputTokens =
|
||||||
isCodex || provider.id.includes("github-copilot") ? undefined : ProviderTransform.maxOutputTokens(input.model)
|
isOpenaiOauth || provider.id.includes("github-copilot")
|
||||||
|
? undefined
|
||||||
|
: ProviderTransform.maxOutputTokens(input.model)
|
||||||
|
|
||||||
const tools = await resolveTools(input)
|
const tools = await resolveTools(input)
|
||||||
|
|
||||||
@@ -217,15 +231,7 @@ export namespace LLM {
|
|||||||
...headers,
|
...headers,
|
||||||
},
|
},
|
||||||
maxRetries: input.retries ?? 0,
|
maxRetries: input.retries ?? 0,
|
||||||
messages: [
|
messages,
|
||||||
...system.map(
|
|
||||||
(x): ModelMessage => ({
|
|
||||||
role: "system",
|
|
||||||
content: x,
|
|
||||||
}),
|
|
||||||
),
|
|
||||||
...input.messages,
|
|
||||||
],
|
|
||||||
model: wrapLanguageModel({
|
model: wrapLanguageModel({
|
||||||
model: language,
|
model: language,
|
||||||
middleware: [
|
middleware: [
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import PROMPT_DEFAULT from "./prompt/default.txt"
|
|||||||
import PROMPT_BEAST from "./prompt/beast.txt"
|
import PROMPT_BEAST from "./prompt/beast.txt"
|
||||||
import PROMPT_GEMINI from "./prompt/gemini.txt"
|
import PROMPT_GEMINI from "./prompt/gemini.txt"
|
||||||
|
|
||||||
import PROMPT_CODEX from "./prompt/codex_header.txt"
|
import PROMPT_CODEX from "./prompt/codex.txt"
|
||||||
import PROMPT_TRINITY from "./prompt/trinity.txt"
|
import PROMPT_TRINITY from "./prompt/trinity.txt"
|
||||||
import type { Provider } from "@/provider/provider"
|
import type { Provider } from "@/provider/provider"
|
||||||
import type { Agent } from "@/agent/agent"
|
import type { Agent } from "@/agent/agent"
|
||||||
@@ -15,14 +15,10 @@ import { PermissionNext } from "@/permission"
|
|||||||
import { Skill } from "@/skill"
|
import { Skill } from "@/skill"
|
||||||
|
|
||||||
export namespace SystemPrompt {
|
export namespace SystemPrompt {
|
||||||
export function instructions() {
|
|
||||||
return PROMPT_CODEX.trim()
|
|
||||||
}
|
|
||||||
|
|
||||||
export function provider(model: Provider.Model) {
|
export function provider(model: Provider.Model) {
|
||||||
if (model.api.id.includes("gpt-5")) return [PROMPT_CODEX]
|
if (model.api.id.includes("gpt-4") || model.api.id.includes("o1") || model.api.id.includes("o3"))
|
||||||
if (model.api.id.includes("gpt-") || model.api.id.includes("o1") || model.api.id.includes("o3"))
|
|
||||||
return [PROMPT_BEAST]
|
return [PROMPT_BEAST]
|
||||||
|
if (model.api.id.includes("gpt")) return [PROMPT_CODEX]
|
||||||
if (model.api.id.includes("gemini-")) return [PROMPT_GEMINI]
|
if (model.api.id.includes("gemini-")) return [PROMPT_GEMINI]
|
||||||
if (model.api.id.includes("claude")) return [PROMPT_ANTHROPIC]
|
if (model.api.id.includes("claude")) return [PROMPT_ANTHROPIC]
|
||||||
if (model.api.id.toLowerCase().includes("trinity")) return [PROMPT_TRINITY]
|
if (model.api.id.toLowerCase().includes("trinity")) return [PROMPT_TRINITY]
|
||||||
|
|||||||
Reference in New Issue
Block a user