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"- DEFAULT_PARAMS =
{model: "gemini-1.5-flash"}.freeze
Instance Method Summary collapse
- #complete(prompt, role = :user, **params) ⇒ LLM::Response::Completion
- #embed(input, **params) ⇒ LLM::Response::Embedding
-
#initialize(secret) ⇒ Gemini
constructor
A new instance of Gemini.
Methods included from Format
Methods inherited from Provider
Methods included from HTTPClient
Constructor Details
Instance Method Details
#complete(prompt, role = :user, **params) ⇒ LLM::Response::Completion
39 40 41 42 43 44 45 46 47 48 |
# File 'lib/llm/providers/gemini.rb', line 39 def complete(prompt, role = :user, **params) params = DEFAULT_PARAMS.merge(params) path = ["/v1beta/models", params.delete(:model)].join("/") req = Net::HTTP::Post.new [path, "generateContent"].join(":") = [*(params.delete(:messages) || []), LLM::Message.new(role, prompt)] body = {contents: format()} req = preflight(req, body) res = request(@http, req) Response::Completion.new(res).extend(response_parser) end |
#embed(input, **params) ⇒ LLM::Response::Embedding
25 26 27 28 29 30 31 32 |
# File 'lib/llm/providers/gemini.rb', line 25 def (input, **params) path = ["/v1beta/models", "text-embedding-004"].join("/") req = Net::HTTP::Post.new [path, "embedContent"].join(":") body = {content: {parts: [{text: input}]}} req = preflight(req, body) res = request @http, req Response::Embedding.new(res).extend(response_parser) end |