kopia lustrzana https://github.com/transitive-bullshit/chatgpt-api
feat: allow setting model via env, rename opt to modelDefaults, and fix setting of retryConfig
rodzic
ed44a8629a
commit
714af29424
|
@ -3,12 +3,12 @@ import defaultKy from 'ky'
|
||||||
import { SetOptional } from 'type-fest'
|
import { SetOptional } from 'type-fest'
|
||||||
|
|
||||||
import * as types from './types'
|
import * as types from './types'
|
||||||
import { DEFAULT_OPENAI_MODEL } from './constants'
|
|
||||||
import { TerminalTaskTracker } from './events'
|
import { TerminalTaskTracker } from './events'
|
||||||
import { HumanFeedbackOptions, HumanFeedbackType } from './human-feedback'
|
import { HumanFeedbackOptions, HumanFeedbackType } from './human-feedback'
|
||||||
import { HumanFeedbackMechanismCLI } from './human-feedback/cli'
|
import { HumanFeedbackMechanismCLI } from './human-feedback/cli'
|
||||||
import { OpenAIChatCompletion } from './llms/openai'
|
import { OpenAIChatCompletion } from './llms/openai'
|
||||||
import { defaultLogger } from './logger'
|
import { defaultLogger } from './logger'
|
||||||
|
import { openaiModelDefaults } from './model_defaults'
|
||||||
import { defaultIDGeneratorFn, isFunction, isString } from './utils'
|
import { defaultIDGeneratorFn, isFunction, isString } from './utils'
|
||||||
|
|
||||||
export class Agentic extends EventEmitter {
|
export class Agentic extends EventEmitter {
|
||||||
|
@ -30,7 +30,7 @@ export class Agentic extends EventEmitter {
|
||||||
constructor(opts: {
|
constructor(opts: {
|
||||||
openai?: types.openai.OpenAIClient
|
openai?: types.openai.OpenAIClient
|
||||||
anthropic?: types.anthropic.Client
|
anthropic?: types.anthropic.Client
|
||||||
openaiModelDefaults?: Pick<
|
modelDefaults?: Pick<
|
||||||
types.BaseLLMOptions,
|
types.BaseLLMOptions,
|
||||||
'provider' | 'model' | 'modelParams' | 'timeoutMs' | 'retryConfig'
|
'provider' | 'model' | 'modelParams' | 'timeoutMs' | 'retryConfig'
|
||||||
>
|
>
|
||||||
|
@ -56,18 +56,7 @@ export class Agentic extends EventEmitter {
|
||||||
this._logger = opts.logger ?? defaultLogger
|
this._logger = opts.logger ?? defaultLogger
|
||||||
this._taskTracker = opts.taskTracker ?? new TerminalTaskTracker()
|
this._taskTracker = opts.taskTracker ?? new TerminalTaskTracker()
|
||||||
|
|
||||||
this._openaiModelDefaults = {
|
this._openaiModelDefaults = openaiModelDefaults(opts.modelDefaults || {})
|
||||||
provider: 'openai',
|
|
||||||
model: DEFAULT_OPENAI_MODEL,
|
|
||||||
modelParams: {},
|
|
||||||
timeoutMs: 2 * 60000,
|
|
||||||
retryConfig: {
|
|
||||||
retries: 2,
|
|
||||||
strategy: 'heal',
|
|
||||||
...opts.openaiModelDefaults?.retryConfig
|
|
||||||
},
|
|
||||||
...opts.openaiModelDefaults
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO
|
// TODO
|
||||||
// this._anthropicModelDefaults = {}
|
// this._anthropicModelDefaults = {}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
export const DEFAULT_OPENAI_MODEL = 'gpt-3.5-turbo'
|
|
||||||
export const DEFAULT_ANTHROPIC_MODEL = 'claude-instant-v1'
|
export const DEFAULT_ANTHROPIC_MODEL = 'claude-instant-v1'
|
||||||
export const DEFAULT_BOT_NAME = 'Agentic Bot'
|
export const DEFAULT_BOT_NAME = 'Agentic Bot'
|
||||||
export const SKIP_HOOKS = Symbol('SKIP_HOOKS')
|
export const SKIP_HOOKS = Symbol('SKIP_HOOKS')
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import type { SetOptional } from 'type-fest'
|
import type { SetOptional } from 'type-fest'
|
||||||
|
|
||||||
import * as types from '@/types'
|
import * as types from '@/types'
|
||||||
import { DEFAULT_OPENAI_MODEL } from '@/constants'
|
import { getEnv } from '@/env'
|
||||||
import { BaseTask } from '@/task'
|
import { BaseTask } from '@/task'
|
||||||
|
|
||||||
import { BaseChatCompletion } from './chat'
|
import { BaseChatCompletion } from './chat'
|
||||||
|
@ -31,7 +31,10 @@ export class OpenAIChatCompletion<
|
||||||
SetOptional<Omit<types.openai.ChatCompletionParams, 'messages'>, 'model'>
|
SetOptional<Omit<types.openai.ChatCompletionParams, 'messages'>, 'model'>
|
||||||
>
|
>
|
||||||
) {
|
) {
|
||||||
const model = options.modelParams?.model || DEFAULT_OPENAI_MODEL
|
const model =
|
||||||
|
options.modelParams?.model ??
|
||||||
|
getEnv('OPENAI_MODEL') ??
|
||||||
|
getEnv('OPENAI_DEFAULT_MODEL', 'gpt-3.5-turbo')
|
||||||
super({
|
super({
|
||||||
provider: 'openai',
|
provider: 'openai',
|
||||||
model,
|
model,
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
import * as types from './types'
|
||||||
|
import { getEnv } from './env'
|
||||||
|
|
||||||
|
export function openaiModelDefaults(
|
||||||
|
opts: Pick<
|
||||||
|
types.BaseLLMOptions,
|
||||||
|
'provider' | 'model' | 'modelParams' | 'timeoutMs' | 'retryConfig'
|
||||||
|
>
|
||||||
|
) {
|
||||||
|
const { retryConfig, modelParams, ...rest } = opts
|
||||||
|
return {
|
||||||
|
provider: 'openai',
|
||||||
|
model:
|
||||||
|
getEnv('OPENAI_MODEL') ?? getEnv('OPENAI_DEFAULT_MODEL', 'gpt-3.5-turbo'),
|
||||||
|
modelParams: {},
|
||||||
|
timeoutMs: 2 * 60000,
|
||||||
|
retryConfig: {
|
||||||
|
retries: 2,
|
||||||
|
strategy: 'heal',
|
||||||
|
...retryConfig
|
||||||
|
},
|
||||||
|
...rest
|
||||||
|
}
|
||||||
|
}
|
Ładowanie…
Reference in New Issue