Module: Lf::LLAMA

Defined in:
lib/llamafile.rb

Defined Under Namespace

Classes: Llama

Constant Summary collapse

DEF =
{ 
		stream: false,
		grammar: %[root ::= l+\nl ::= i "\n"\ni ::= [^\n\t{|}]+ [.!?]], 
		n_predict: 2048, 
		n_probs: 0,
		cache_prompt: true,
		min_keep: 10,
		min_p: 0.05,
		mirostat: 2,
		mirostat_eta: 0.1,
		mirostat_tau: 5,
		repeat_lat_n: 256,
		repeat_penalty: 2,
		slot_id: -1,
		temperature: 0,
		tfs_z: 1,
		top_k: 95,
 	top_p: 0.95,
		typical_p: 1,
		stop: ['</s>','Llama:','User:']
}

Class Method Summary collapse

Class Method Details

.post(h = {}, &b) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/llamafile.rb', line 34

def self.post h={}, &b
hh = { 
 			headers: { "Content-Type": "application/json", "Connection": 'keep-alive', "Priority": 'u=0' }, 
   			body: JSON.generate(DEF.merge(h)) 
 		}
 		fiber = Fiber.new do |hhh|
 			begin
  			r = Llama.post('/completion', hhh)
 				#puts %[LLAMA CODE: #{r.code}]
 				if r.code == 200
   			rr = r['content'].gsub(/<.+>/, "").gsub(/\s\s+/, " ").gsub(/\n+/, "\n");
 					if block_given?
				Fiber.yield b.call(rr);
			else
				Fiber.yield rr;
			end
		else
			Fiber.yield false
		end
	rescue => err
		puts %[LLAMA POST ERR: #{err}]
		Fiber.yield false
	end
end
fiber.resume(hh)
end