Class: LLM::Gemini
- Includes:
- Format
- Defined in:
- lib/llm/providers/gemini.rb,
lib/llm/providers/gemini/format.rb,
lib/llm/providers/gemini/error_handler.rb,
lib/llm/providers/gemini/response_parser.rb
Overview
The Gemini class implements a provider for [Gemini](ai.google.dev/)
Defined Under Namespace
Modules: Format, ResponseParser Classes: ErrorHandler
Constant Summary collapse
- HOST =
"generativelanguage.googleapis.com"
Instance Method Summary collapse
-
#assistant_role ⇒ String
Returns the role of the assistant in the conversation.
- #complete(prompt, role = :user, **params) ⇒ LLM::Response::Completion
- #embed(input, **params) ⇒ LLM::Response::Embedding
-
#initialize(secret) ⇒ Gemini
constructor
A new instance of Gemini.
-
#models ⇒ Hash<String, LLM::Model>
Returns a hash of available models.
Methods included from Format
Methods inherited from Provider
Methods included from HTTPClient
Constructor Details
Instance Method Details
#assistant_role ⇒ String
Returns the role of the assistant in the conversation. Usually “assistant” or “model”
49 50 51 |
# File 'lib/llm/providers/gemini.rb', line 49 def assistant_role "model" end |
#complete(prompt, role = :user, **params) ⇒ LLM::Response::Completion
37 38 39 40 41 42 43 44 45 |
# File 'lib/llm/providers/gemini.rb', line 37 def complete(prompt, role = :user, **params) params = {model: "gemini-1.5-flash"}.merge!(params) path = ["/v1beta/models/#{params.delete(:model)}", "generateContent?key=#{@secret}"].join(":") req = Net::HTTP::Post.new(path, headers) = [*(params.delete(:messages) || []), LLM::Message.new(role, prompt)] req.body = JSON.dump({contents: format()}) res = request(@http, req) Response::Completion.new(res).extend(response_parser) end |
#embed(input, **params) ⇒ LLM::Response::Embedding
24 25 26 27 28 29 30 |
# File 'lib/llm/providers/gemini.rb', line 24 def (input, **params) path = ["/v1beta/models/text-embedding-004", "embedContent?key=#{@secret}"].join(":") req = Net::HTTP::Post.new(path, headers) req.body = JSON.dump({content: {parts: [{text: input}]}}) res = request(@http, req) Response::Embedding.new(res).extend(response_parser) end |
#models ⇒ Hash<String, LLM::Model>
Returns a hash of available models
55 56 57 |
# File 'lib/llm/providers/gemini.rb', line 55 def models @models ||= load_models!("gemini") end |