mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	try using method and path when operationId is undefined #5525
This commit is contained in:
		@@ -4,7 +4,7 @@ import { nanoid } from "nanoid";
 | 
			
		||||
import { createPersistStore } from "../utils/store";
 | 
			
		||||
import { getClientConfig } from "../config/client";
 | 
			
		||||
import yaml from "js-yaml";
 | 
			
		||||
import { adapter } from "../utils";
 | 
			
		||||
import { adapter, getOperationId } from "../utils";
 | 
			
		||||
import { useAccessStore } from "./access";
 | 
			
		||||
 | 
			
		||||
const isApp = getClientConfig()?.isApp;
 | 
			
		||||
@@ -116,7 +116,7 @@ export const FunctionToolService = {
 | 
			
		||||
        return {
 | 
			
		||||
          type: "function",
 | 
			
		||||
          function: {
 | 
			
		||||
            name: o.operationId,
 | 
			
		||||
            name: getOperationId(o),
 | 
			
		||||
            description: o.description || o.summary,
 | 
			
		||||
            parameters: parameters,
 | 
			
		||||
          },
 | 
			
		||||
@@ -124,7 +124,7 @@ export const FunctionToolService = {
 | 
			
		||||
      }),
 | 
			
		||||
      funcs: operations.reduce((s, o) => {
 | 
			
		||||
        // @ts-ignore
 | 
			
		||||
        s[o.operationId] = function (args) {
 | 
			
		||||
        s[getOperationId(o)] = function (args) {
 | 
			
		||||
          const parameters: Record<string, any> = {};
 | 
			
		||||
          if (o.parameters instanceof Array) {
 | 
			
		||||
            o.parameters.forEach((p) => {
 | 
			
		||||
@@ -139,8 +139,8 @@ export const FunctionToolService = {
 | 
			
		||||
          } else if (authLocation == "body") {
 | 
			
		||||
            args[headerName] = tokenValue;
 | 
			
		||||
          }
 | 
			
		||||
          // @ts-ignore
 | 
			
		||||
          return api.client[o.operationId](
 | 
			
		||||
          // @ts-ignore if o.operationId is null, then using o.path and o.method
 | 
			
		||||
          return api.client.paths[o.path][o.method](
 | 
			
		||||
            parameters,
 | 
			
		||||
            args,
 | 
			
		||||
            api.axiosConfigDefaults,
 | 
			
		||||
@@ -253,6 +253,7 @@ export const usePluginStore = createPersistStore(
 | 
			
		||||
                    .catch((e) => item),
 | 
			
		||||
            ),
 | 
			
		||||
          ).then((builtinPlugins: any) => {
 | 
			
		||||
            return;
 | 
			
		||||
            builtinPlugins
 | 
			
		||||
              .filter((item: any) => item?.content)
 | 
			
		||||
              .forEach((item: any) => {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										12
									
								
								app/utils.ts
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								app/utils.ts
									
									
									
									
									
								
							@@ -377,3 +377,15 @@ export function safeLocalStorage(): {
 | 
			
		||||
    },
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function getOperationId(operation: {
 | 
			
		||||
  operationId?: string;
 | 
			
		||||
  method: string;
 | 
			
		||||
  path: string;
 | 
			
		||||
}) {
 | 
			
		||||
  // pattern '^[a-zA-Z0-9_-]+$'
 | 
			
		||||
  return (
 | 
			
		||||
    operation?.operationId ||
 | 
			
		||||
    `${operation.method.toUpperCase()}${operation.path.replaceAll("/", "_")}`
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user