Sha256: d98c5e427df72605d61f98ad5695ac490468df40d9264f0895b4451aaf16dcd9

Contents?: true

Size: 973 Bytes

Versions: 1

Compression:

Stored size: 973 Bytes

Contents

# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2024, by Samuel Williams.

require "async/rest/resource"

require_relative "generate"
require_relative "models"

module Async
	module Ollama
		# Represents a connection to the Ollama service.
		class Client < Async::REST::Resource
			# The default endpoint to connect to.
			ENDPOINT = Async::HTTP::Endpoint.parse("http://localhost:11434")
			
			# Generate a response from the given prompt.
			# @parameter prompt [String] The prompt to generate a response from.
			def generate(prompt, **options, &block)
				options[:prompt] = prompt
				options[:model] ||= "llama3"
				
				Generate.post(self.with(path: "/api/generate"), options) do |resource, response|
					if block_given?
						yield response
					end
					
					Generate.new(resource, value: response.read, metadata: response.headers)
				end
			end
			
			def models
				Models.get(self.with(path: "/api/tags"))
			end
		end
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
async-ollama-0.4.0 lib/async/ollama/client.rb