Newnol commited on
Commit
c773824
·
unverified ·
1 Parent(s): 41bb909

feat: added Github provider (#1109)

Browse files
app/lib/modules/llm/providers/github.ts ADDED
@@ -0,0 +1,52 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { BaseProvider } from '~/lib/modules/llm/base-provider';
2
+ import type { ModelInfo } from '~/lib/modules/llm/types';
3
+ import type { IProviderSetting } from '~/types/model';
4
+ import type { LanguageModelV1 } from 'ai';
5
+ import { createOpenAI } from '@ai-sdk/openai';
6
+
7
+ export default class GithubProvider extends BaseProvider {
8
+ name = 'Github';
9
+ getApiKeyLink = 'https://github.com/settings/personal-access-tokens';
10
+
11
+ config = {
12
+ apiTokenKey: 'GITHUB_API_KEY',
13
+ };
14
+ // find more in https://github.com/marketplace?type=models
15
+ staticModels: ModelInfo[] = [
16
+ { name: 'gpt-4o', label: 'GPT-4o', provider: 'Github', maxTokenAllowed: 8000 },
17
+ { name: 'o1', label: 'o1-preview', provider: 'Github', maxTokenAllowed: 100000 },
18
+ { name: 'o1-mini', label: 'o1-mini', provider: 'Github', maxTokenAllowed: 8000 },
19
+ { name: 'gpt-4o-mini', label: 'GPT-4o Mini', provider: 'Github', maxTokenAllowed: 8000 },
20
+ { name: 'gpt-4-turbo', label: 'GPT-4 Turbo', provider: 'Github', maxTokenAllowed: 8000 },
21
+ { name: 'gpt-4', label: 'GPT-4', provider: 'Github', maxTokenAllowed: 8000 },
22
+ { name: 'gpt-3.5-turbo', label: 'GPT-3.5 Turbo', provider: 'Github', maxTokenAllowed: 8000 },
23
+ ];
24
+
25
+ getModelInstance(options: {
26
+ model: string;
27
+ serverEnv: Env;
28
+ apiKeys?: Record<string, string>;
29
+ providerSettings?: Record<string, IProviderSetting>;
30
+ }): LanguageModelV1 {
31
+ const { model, serverEnv, apiKeys, providerSettings } = options;
32
+
33
+ const { apiKey } = this.getProviderBaseUrlAndKey({
34
+ apiKeys,
35
+ providerSettings: providerSettings?.[this.name],
36
+ serverEnv: serverEnv as any,
37
+ defaultBaseUrlKey: '',
38
+ defaultApiTokenKey: 'GITHUB_API_KEY',
39
+ });
40
+
41
+ if (!apiKey) {
42
+ throw new Error(`Missing API key for ${this.name} provider`);
43
+ }
44
+
45
+ const openai = createOpenAI({
46
+ baseURL: 'https://models.inference.ai.azure.com',
47
+ apiKey,
48
+ });
49
+
50
+ return openai(model);
51
+ }
52
+ }
app/lib/modules/llm/registry.ts CHANGED
@@ -15,6 +15,7 @@ import TogetherProvider from './providers/together';
15
  import XAIProvider from './providers/xai';
16
  import HyperbolicProvider from './providers/hyperbolic';
17
  import AmazonBedrockProvider from './providers/amazon-bedrock';
 
18
 
19
  export {
20
  AnthropicProvider,
@@ -34,4 +35,5 @@ export {
34
  TogetherProvider,
35
  LMStudioProvider,
36
  AmazonBedrockProvider,
 
37
  };
 
15
  import XAIProvider from './providers/xai';
16
  import HyperbolicProvider from './providers/hyperbolic';
17
  import AmazonBedrockProvider from './providers/amazon-bedrock';
18
+ import GithubProvider from './providers/github';
19
 
20
  export {
21
  AnthropicProvider,
 
35
  TogetherProvider,
36
  LMStudioProvider,
37
  AmazonBedrockProvider,
38
+ GithubProvider,
39
  };