mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-17 08:50:15 +01:00
🔌 fix: Minor Plugins Improvements (#1766)
* fix(PluginsClient): don't invoke `getFunctionModelName` when using Azure OpenAI * fix: plugins styling fix with new cursor * ci(PluginsClient): test azure exception for getFunctionModelName
This commit is contained in:
parent
a2e85b7053
commit
d2494e6b3b
6 changed files with 45 additions and 7 deletions
|
|
@ -30,7 +30,7 @@ class PluginsClient extends OpenAIClient {
|
||||||
|
|
||||||
super.setOptions(options);
|
super.setOptions(options);
|
||||||
|
|
||||||
if (this.functionsAgent && this.agentOptions.model && !this.useOpenRouter) {
|
if (this.functionsAgent && this.agentOptions.model && !this.useOpenRouter && !this.azure) {
|
||||||
this.agentOptions.model = this.getFunctionModelName(this.agentOptions.model);
|
this.agentOptions.model = this.getFunctionModelName(this.agentOptions.model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ const { HumanChatMessage, AIChatMessage } = require('langchain/schema');
|
||||||
const PluginsClient = require('../PluginsClient');
|
const PluginsClient = require('../PluginsClient');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
|
|
||||||
jest.mock('../../../lib/db/connectDb');
|
jest.mock('~/lib/db/connectDb');
|
||||||
jest.mock('../../../models/Conversation', () => {
|
jest.mock('~/models/Conversation', () => {
|
||||||
return function () {
|
return function () {
|
||||||
return {
|
return {
|
||||||
save: jest.fn(),
|
save: jest.fn(),
|
||||||
|
|
@ -12,6 +12,12 @@ jest.mock('../../../models/Conversation', () => {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const defaultAzureOptions = {
|
||||||
|
azureOpenAIApiInstanceName: 'your-instance-name',
|
||||||
|
azureOpenAIApiDeploymentName: 'your-deployment-name',
|
||||||
|
azureOpenAIApiVersion: '2020-07-01-preview',
|
||||||
|
};
|
||||||
|
|
||||||
describe('PluginsClient', () => {
|
describe('PluginsClient', () => {
|
||||||
let TestAgent;
|
let TestAgent;
|
||||||
let options = {
|
let options = {
|
||||||
|
|
@ -187,4 +193,30 @@ describe('PluginsClient', () => {
|
||||||
expect(client.getFunctionModelName('')).toBe('gpt-3.5-turbo');
|
expect(client.getFunctionModelName('')).toBe('gpt-3.5-turbo');
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
describe('Azure OpenAI tests specific to Plugins', () => {
|
||||||
|
// TODO: add more tests for Azure OpenAI integration with Plugins
|
||||||
|
// let client;
|
||||||
|
// beforeEach(() => {
|
||||||
|
// client = new PluginsClient('dummy_api_key');
|
||||||
|
// });
|
||||||
|
|
||||||
|
test('should not call getFunctionModelName when azure options are set', () => {
|
||||||
|
const spy = jest.spyOn(PluginsClient.prototype, 'getFunctionModelName');
|
||||||
|
const model = 'gpt-4-turbo';
|
||||||
|
|
||||||
|
// note, without the azure change in PR #1766, `getFunctionModelName` is called twice
|
||||||
|
const testClient = new PluginsClient('dummy_api_key', {
|
||||||
|
agentOptions: {
|
||||||
|
model,
|
||||||
|
agent: 'functions',
|
||||||
|
},
|
||||||
|
azure: defaultAzureOptions,
|
||||||
|
});
|
||||||
|
|
||||||
|
expect(spy).not.toHaveBeenCalled();
|
||||||
|
expect(testClient.agentOptions.model).toBe(model);
|
||||||
|
|
||||||
|
spy.mockRestore();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,13 @@ const Markdown = memo(({ content, message, showCursor }: TContentProps) => {
|
||||||
|
|
||||||
if (isInitializing) {
|
if (isInitializing) {
|
||||||
rehypePlugins.pop();
|
rehypePlugins.pop();
|
||||||
return <span className="result-thinking" />;
|
return (
|
||||||
|
<div className="absolute">
|
||||||
|
<p className="relative">
|
||||||
|
<span className="result-thinking" />
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
let isValidIframe: string | boolean | null = false;
|
let isValidIframe: string | boolean | null = false;
|
||||||
|
|
|
||||||
|
|
@ -127,7 +127,7 @@ const MessageContent = ({
|
||||||
{showText ? (
|
{showText ? (
|
||||||
<DisplayMessage
|
<DisplayMessage
|
||||||
key={`display-${messageId}-${idx}`}
|
key={`display-${messageId}-${idx}`}
|
||||||
showCursor={isLastIndex && isLast}
|
showCursor={isLastIndex && isLast && isSubmitting}
|
||||||
text={currentText}
|
text={currentText}
|
||||||
{...props}
|
{...props}
|
||||||
/>
|
/>
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ const Plugin: React.FC<PluginProps> = ({ plugin }) => {
|
||||||
<div
|
<div
|
||||||
className={cn(
|
className={cn(
|
||||||
plugin.loading ? 'bg-green-100' : 'bg-gray-20',
|
plugin.loading ? 'bg-green-100' : 'bg-gray-20',
|
||||||
'flex items-center rounded p-3 text-xs text-gray-900',
|
'my-1 flex items-center rounded p-3 text-xs text-gray-900',
|
||||||
)}
|
)}
|
||||||
>
|
>
|
||||||
<div>
|
<div>
|
||||||
|
|
|
||||||
|
|
@ -1815,7 +1815,7 @@ html {
|
||||||
display:block;
|
display:block;
|
||||||
height:12px;
|
height:12px;
|
||||||
position:absolute;
|
position:absolute;
|
||||||
top:32px;
|
top:-11px;
|
||||||
-webkit-transform:translateZ(0);
|
-webkit-transform:translateZ(0);
|
||||||
transform:translateZ(0);
|
transform:translateZ(0);
|
||||||
-webkit-transform-origin:center;
|
-webkit-transform-origin:center;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue