diff --git a/README.md b/README.md index f226937dd..e4250f0cd 100644 --- a/README.md +++ b/README.md @@ -57,10 +57,14 @@ - [ ] 支持开关指定插件 - [ ] 支持添加自定义插件 - [ ] 支持 Agent 参数配置( agentType, maxIterations, returnIntermediateSteps 等) -- [ ] 支持 ChatSession 级别插件功能开关 +- [x] 支持 ChatSession 级别插件功能开关 + + 仅在使用 `0613` 版本模型时会出现插件开关,其它模型默认为关闭状态,开关也不会显示。 ## 已知问题 -- [ ] 使用插件时需将模型切换为 `0613` 版本模型,如:`gpt-3.5-turbo-0613` +- [x] 使用插件时需将模型切换为 `0613` 版本模型,如:`gpt-3.5-turbo-0613` + + 尝试使用 `chat-conversational-react-description` 等类型的 `agent` 使用插件时效果并不理想,不再考虑支持其它版本的模型。 - [x] `SERPAPI_API_KEY` 目前为必填,后续会支持使用 DuckDuckGo 替换搜索插件 - [ ] Agent 不支持自定义接口地址 - [x] ~~部分场景下插件会调用失败~~ diff --git a/app/api/langchain/tool/agent/route.ts b/app/api/langchain/tool/agent/route.ts index 356395b8f..c2b38716d 100644 --- a/app/api/langchain/tool/agent/route.ts +++ b/app/api/langchain/tool/agent/route.ts @@ -200,20 +200,12 @@ async function handle(req: NextRequest) { presencePenalty: reqBody.presence_penalty, frequencyPenalty: reqBody.frequency_penalty, }); - - let executor = await initializeAgentExecutorWithOptions(tools, llm, { - agentType: "chat-conversational-react-description", + const executor = await initializeAgentExecutorWithOptions(tools, llm, { + agentType: "openai-functions", returnIntermediateSteps: true, maxIterations: 3, memory: memory, }); - if (reqBody.model.endsWith("0613")) - executor = await initializeAgentExecutorWithOptions(tools, llm, { - agentType: "openai-functions", - returnIntermediateSteps: true, - maxIterations: 3, - memory: memory, - }); executor.call( { diff --git a/app/components/chat.tsx b/app/components/chat.tsx index a4cc1ee86..f09a29236 100644 --- a/app/components/chat.tsx +++ b/app/components/chat.tsx @@ -417,10 +417,10 @@ export function ChatActions(props: { const chatStore = useChatStore(); // switch Plugins - const usePlugins = chatStore.currentSession().usePlugins; + const usePlugins = chatStore.currentSession().mask.usePlugins; function switchUsePlugins() { chatStore.updateCurrentSession((session) => { - session.usePlugins = !session.usePlugins; + session.mask.usePlugins = !session.mask.usePlugins; }); } @@ -511,15 +511,17 @@ export function ChatActions(props: { icon={} /> - : } - /> + {currentModel.endsWith("0613") && ( + : } + /> + )} {showModelSelector && ( { session.mask.modelConfig.model = s[0] as ModelType; session.mask.syncGlobalConfig = false; + session.mask.usePlugins = + session.mask.modelConfig.model.endsWith("0613"); }); showToast(s[0]); }} @@ -1203,8 +1207,7 @@ function _Chat() { )} - {session.usePlugins && - !isUser && + {!isUser && message.toolMessages && message.toolMessages.map((tool, index) => (
()( session.messages.push(botMessage); }); - if (session.usePlugins) { + if (session.mask.usePlugins) { console.log("[ToolAgent] start"); api.llm.toolAgentChat({ messages: sendMessages, diff --git a/app/store/mask.ts b/app/store/mask.ts index 02132b77d..117a6b3c3 100644 --- a/app/store/mask.ts +++ b/app/store/mask.ts @@ -18,6 +18,7 @@ export type Mask = { modelConfig: ModelConfig; lang: Lang; builtin: boolean; + usePlugins?: boolean; }; export const DEFAULT_MASK_STATE = { @@ -46,6 +47,7 @@ export const createEmptyMask = () => lang: getLang(), builtin: false, createdAt: Date.now(), + usePlugins: useAppConfig.getState().modelConfig.model.endsWith("0613"), } as Mask); export const useMaskStore = create()(