class SlackSmartBot
module Commands
module General
module AI
module OpenAI
def open_ai_models(model='', just_models: false)
save_stats(__method__) unless just_models
get_personal_settings()
@ai_open_ai, message_connect = SlackSmartBot::AI::OpenAI.connect(@ai_open_ai, config, @personal_settings, service: :models)
respond message_connect if message_connect
user = Thread.current[:user].dup
team_id = user.team_id
team_id_user = Thread.current[:team_id_user]
if !@ai_open_ai[team_id_user].nil? and !@ai_open_ai[team_id_user][:models][:client].nil?
react :running unless just_models
begin
res = SlackSmartBot::AI::OpenAI.models(@ai_open_ai[team_id_user][:models][:client], @ai_open_ai[team_id_user][:models], model)
if model == '' or model == 'chatgpt'
unless just_models
message = ["*OpenAI*"]
message << "To start a chatGPT session using a specific model: `^chatgpt SESSION_NAME MODEL_NAME`"
message << "For example: `^chatgpt data_analysis gpt-35-turbo-0301`"
message << "If you want to use a model by default, you can use on a DM with the SmartBot the command"
message << "`set personal settings ai.open_ai.chat_gpt.model MODEL_NAME`"
message << "`set personal settings ai.open_ai.whisper.model MODEL_NAME`" if model == ''
message << "Here are the #{"#{model} " if model!=''}models available for use:"
message << "```#{res.strip}```"
respond message.join("\n")
end
@open_ai_models = res.split("\n") if model == ''
else
if just_models
return res
else
respond "*OpenAI* Info about #{model} model:\n```#{res.strip}```"
end
end
rescue => exception
@logger.warn "Error in open_ai_models: #{exception}"
respond "*OpenAI*: Sorry, I'm having some problems. OpenAI probably is not available. Please try again later."
end
unreact :running unless just_models
end
end
end
end
end
end
end