refactor: move websearch provider code to providers folder

This commit is contained in:
kangfenmao 2025-04-01 11:05:31 +08:00
parent e41df917b4
commit 95df69ff82
17 changed files with 46 additions and 38 deletions

View File

@ -6,7 +6,7 @@ import { PROVIDER_CONFIG } from '@renderer/config/providers'
import { useTheme } from '@renderer/context/ThemeProvider'
import { useProvider } from '@renderer/hooks/useProvider'
import i18n from '@renderer/i18n'
import { isOpenAIProvider } from '@renderer/providers/ProviderFactory'
import { isOpenAIProvider } from '@renderer/providers/AiProvider/ProviderFactory'
import { checkApi, formatApiKeys } from '@renderer/services/ApiService'
import { checkModelsHealth, ModelCheckStatus } from '@renderer/services/HealthCheckService'
import { isProviderSupportAuth, isProviderSupportCharge } from '@renderer/services/ProviderService'

View File

@ -221,7 +221,7 @@ export default class AnthropicProvider extends BaseProvider {
return onChunk({
text,
reasoning_content,
usage: message.usage,
usage: message.usage as any,
metrics: {
completion_tokens: message.usage.output_tokens,
time_completion_millsec,

View File

@ -1,9 +1,47 @@
import BaseProvider from '@renderer/providers/BaseProvider'
import ProviderFactory from '@renderer/providers/ProviderFactory'
import { Assistant, GenerateImageParams, Message, Model, Provider, Suggestion } from '@renderer/types'
import type { GroundingMetadata } from '@google/generative-ai'
import BaseProvider from '@renderer/providers/AiProvider/BaseProvider'
import ProviderFactory from '@renderer/providers/AiProvider/ProviderFactory'
import type {
Assistant,
GenerateImageParams,
GenerateImageResponse,
MCPTool,
MCPToolResponse,
Message,
Metrics,
Model,
Provider,
Suggestion
} from '@renderer/types'
import OpenAI from 'openai'
import { CompletionsParams } from '.'
export interface ChunkCallbackData {
text?: string
reasoning_content?: string
usage?: OpenAI.Completions.CompletionUsage
metrics?: Metrics
search?: GroundingMetadata
citations?: string[]
mcpToolResponse?: MCPToolResponse[]
generateImage?: GenerateImageResponse
}
export interface CompletionsParams {
messages: Message[]
assistant: Assistant
onChunk: ({
text,
reasoning_content,
usage,
metrics,
search,
citations,
mcpToolResponse,
generateImage
}: ChunkCallbackData) => void
onFilterMessages: (messages: Message[]) => void
mcpTools?: MCPTool[]
}
export default class AiProvider {
private sdk: BaseProvider

View File

@ -1,30 +0,0 @@
import type { GroundingMetadata } from '@google/generative-ai'
import type { Assistant, MCPToolResponse, Message, Metrics } from '@renderer/types'
interface ChunkCallbackData {
text?: string
reasoning_content?: string
usage?: OpenAI.Completions.CompletionUsage
metrics?: Metrics
search?: GroundingMetadata
citations?: string[]
mcpToolResponse?: MCPToolResponse[]
generateImage?: GenerateImageResponse
}
interface CompletionsParams {
messages: Message[]
assistant: Assistant
onChunk: ({
text,
reasoning_content,
usage,
metrics,
search,
citations,
mcpToolResponse,
generateImage
}: ChunkCallbackData) => void
onFilterMessages: (messages: Message[]) => void
mcpTools?: MCPTool[]
}

View File

@ -1,8 +1,8 @@
import WebSearchEngineProvider from '@renderer/providers/WebSearchProvider'
import store from '@renderer/store'
import { setDefaultProvider, WebSearchState } from '@renderer/store/websearch'
import { WebSearchProvider, WebSearchResponse } from '@renderer/types'
import { hasObjectKey } from '@renderer/utils'
import WebSearchEngineProvider from '@renderer/webSearchProvider/WebSearchEngineProvider'
import dayjs from 'dayjs'
/**

View File

@ -18,7 +18,7 @@ import { addMCPServer } from '@renderer/store/mcp'
import { MCPServer, MCPTool, MCPToolResponse } from '@renderer/types'
import { ChatCompletionMessageToolCall, ChatCompletionTool } from 'openai/resources'
import { ChunkCallbackData } from '../providers'
import { ChunkCallbackData } from '../providers/AiProvider'
const ensureValidSchema = (obj: Record<string, any>): FunctionDeclarationSchemaProperty => {
// Filter out unsupported keys for Gemini