meta-introspector / lang_agent

ocaml cli and lib tools for talking to (ollama|llama.cpp|openai|...) for a lang-chain like experience
GNU General Public License v3.0
8 stars 2 forks source link

+begin_src shell

opam install --yes ppx_yojson_conv_lib ppx_yojson_conv opam install --yes ppx_yojson lwt_ppx containers lambdasoup uri ezcurl ppx_yojson_conv ppx_yojson_conv_lib ezcurl-lwt yojson opam pin add --yes openai https://github.com/meta-introspector/openai-ocaml.git#main opam install --yes --deps-only .

dune build .

+end_src

+RESULTS:

[openai.0.0.1] synchronised (no changes) openai is now pinned to git+https://github.com/meta-introspector/openai-ocaml.git#main (version 0.0.1)
Already up-to-date.
Nothing to do.
# Run eval $(opam env) to update the current shell environment
[lang_agent.~dev] synchronised (no changes)

Optional coq

+begin_src shell

opam install --yes coq

+end_src

+begin_src shell

dune exec bin/argiope.exe "https://writemycode.com/?goal=snakegame" -- -m mistral

+end_src

+begin_src shell

dune exec -- ./bin/argiope.exe https://github.com/meta-introspector/lang_agent/blob/3d485ff60e2872cbb920980a5fd2dbde908215ed/bin/argiope.ml#L28?q="argiope is a virtual hyperspace navigation simulator" -m mistral

+end_src

+begin_src shell

dune exec bin/chunker.exe -- ./prompt.txt ./separator.txt todo.txt mistral

+end_src

+begin_src shell

dune exec bin/chunker.exe -- ./prompt.txt ./separator.txt ~/2024/01/07/ppx-introspector/test/test2b.ml mistral

+end_src

+begin_src shell

  dune exec bin/scanner.exe --  -s ./huggingface/unimath/batch2/data_30/       -p "Consider the following valid trace of a COQ proof in unimath and interpret it creatively:"  --openai -m mistral

+end_src

+RESULTS:

: DEBUG ./huggingface/unimath/batch2/data_30/

** wild ideas

** hijack urls with an ai in the middle proxy server.

bootstrap on ollama, then to llama.cpp, then embed inside of llama.cpp as well. use threads, ezcurl-lwt produce/consume quasi quoted interfaces to other systems using metacoq streams, streams of encoded type declarations, functions, kinds, records, constructors etc. only allow valid interactions using strong types, and proofs etc define workflows in ocaml or metacoq streams, even encoded in giant urls follow urls that contain the requested system encoded in url. produces urls that describe systems that are the result of the thinking metacoq urls ** postprocess responses and insert urls with annotations that can be visited or not by agent, can expand the results significantly. filtered by the user agent.

+begin_src shell

dune exec bin/scanner.exe --  -s ./huggingface/unimath/batch2/data_30/       -p "Consider the following valid and successful trace of a COQ proof in unimath and interpret it creatively looking for interesting visualizations and metaphors and analogies and describe possible scenes for a comic book.:"  --openai -m "mixtral" -u "https://dev-hub.agentartificial.com"

dune exec bin/scanner.exe --  -s ./huggingface/unimath/batch2/data_30/       -p "Consider the following valid and successful trace of a COQ proof in unimath and interpret it creatively looking for interesting visualizations and metaphors and analogies and describe possible scenes for a comic book.:"  --ollama -m "mistral" -u "http://localhost:11434"

+end_src

+begin_src ocaml

load "unix.cma";;

+end_src

+RESULTS:

: Line 1, characters 0-1: : 1 | #load "unix.cma";;;; : ^ : Error: Illegal character (\)

+begin_src ocaml

let type_terms = [ "set"; "type"; "sort" ] in let model_name = "mixtral" in let url= "https://dev-hub.agentartificial.com" let prompt type_name = "consider a " ^ "consecutive series "^ "of " ^ type_name ^ "to describe " ^ "the universe and universe of universes" ^ "what is your ordering?" in

let count= 10 in let simple = "dune exec ./bin/simple.exe --" in let binding = "--openai"

let do_apply_list run_cmd make_args type_terms = List.iter (fun s -> let args = make_args s in run_cmd args ) type_terms;;

let make_args type_name = [ simple; binding; "-m"; model; "-p"; prompt type_name; "-u"; url; ] in let run_cmd args = let cmd = String.concat " " args in let inp = Unix.open_process_in cmd in let r = In_channel.input_lines inp in In_channel.close inp; let out = String.concat " " r in Printf.printf "Output: %s\n" out

let () = do_apply_list run_cmd make_args type_terms
Printf.printf "Args: %s\n" args

+end_src

+RESULTS:

: Line 17, characters 0-3: : 17 | let () = : ^^^ : Error: Syntax error

+begin_src shell

dune exec ./bin/recurse.exe -- --openai -m "mixtral" \ -u "https://dev-hub.agentartificial.com" \ -s "recurse2" \ -x ".txt" \ -p "consider a consecutive series of propositions to describe the universe and universe of universes. Consider your previous output and continue the thought if there, otherwise start a new thought chain." \ -n 10

+end_src

+RESULTS:

| DEBUG3 | path | recurse2 | | DEBUG4 | MODEL | :mixtral | | Consider:mixtralrecurse2 | | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | | | OUTPUT: | recurse2.txt | |

** llama.cpp mode

+begin_src shell

dune exec ./bin/simple.exe -- --llamacpp -u "http://localhost:8080" -p "consider a consecutive series of types to describe the universe and universe of universes, what is your ordering?"

+end_src

+RESULTS:

| DEBUG3 | path | | | DEBUG4 | MODEL | :mistral | | Consider:mistral | | | | OUTPUT: | _1.out | |

Error at Assoc ([("content", String ("\n\nTo provide an answer, let's first define some terms and concepts:\n\n1. Universe: The totality of all existence, including all matter, energy, space, and time. It is the sum total of everything that exists or can be observed.\n2. Multiverse: A collection of multiple universes, each with its own set of fields and interactions. This concept arises in theoretical physics as a solution to certain problems, such as the fine-tuning problem or the cosmological constant problem.\n3. Meta-universe: The universe that contains all universes, including the multiverse.")); ("generation_settings", Assoc ([("dynatemp_exponent",Float (1.)); ("dynatemp_range", Float (0.)); ("frequency_penalty",Float (0.)); ("grammar", String ("")); ("ignore_eos",Bool (false)); ("logit_bias", List ([])); ("min_p",Float (0.0500000007451)); ("mirostat", Int (0)); ("mirostat_eta",Float (0.10000000149)); ("mirostat_tau", Float (5.)); ("model", String ("/usr/share/ollama/.ollama/models/blobs/sha256:e8a35b5937a5e6d5c35d1f2a15f161e07eefe5e5bb0a3cdd42998ee79b057730")); ("n_ctx", Int (512)); ("n_keep",Int (0)); ("n_predict", Int (128)); ("n_probs",Int (0)); ("penalize_nl", Bool (true)); ("penalty_prompt_tokens",List ([])); ("presence_penalty", Float (0.)); ("repeat_last_n",Int (64)); ("repeat_penalty", Float (1.10000002384)); ("seed",Int (4294967295)); ("stop", List ([])); ("stream",Bool (false)); ("temperature", Float (0.800000011921)); ("tfs_z",Float (1.)); ("top_k", Int (40)); ("top_p",Float (0.949999988079)); ("typical_p", Float (1.)); ("use_penalty_prompt_tokens",Bool (false))])); ("model", String ("/usr/share/ollama/.ollama/models/blobs/sha256:e8a35b5937a5e6d5c35d1f2a15f161e07eefe5e5bb0a3cdd42998ee79b057730")); ("prompt", String ("consider a consecutive series of types to describe the universe and universe of universes, what is your ordering?consider a consecutive series of types to describe the universe and universe of universes, what is your ordering?")); ("slot_id", Int (0)); ("stop",Bool (true)); ("stopped_eos", Bool (false)); ("stopped_limit",Bool (true)); ("stopped_word", Bool (false)); ("stopping_word",String ("")); ("timings", Assoc ([("predicted_ms",Float (14526.219)); ("predicted_n", Int (128)); ("predicted_per_second",Float (8.81165291533)); ("predicted_per_token_ms", Float (113.486085937)); ("prompt_ms",Float (2088.743)); ("prompt_n", Int (44)); ("prompt_per_second",Float (21.0653009968)); ("prompt_per_token_ms", Float (47.4714318182))])); ("tokens_cached",Int (171)); ("tokens_evaluated", Int (44)); ("tokens_predicted",Int (128)); ("truncated", `Bool (false))])

dune exec ./bin/simplegrammar.exe -- --llamacpp -s test4 -u "http://localhost:8080" -p "consider a consecutive series of types to describe the universe and universe of universes, what is your ordering?" -n 4 -g "root ::= (expr \"=\" ws term \"\n\")+\nexpr ::= term ([-+/] term)\nterm ::= ident | num | \"(\" ws expr \")\" ws\nident ::= [a-z] [a-z0-9] ws\nnum ::= [0-9]+ ws\nws ::= [ \t\n]" s

GRAMMAR=~/experiments/gbnf_parser/grammars/ebnf.ebnf DS=$(date -Iseconds) PROMPT_NAME=prompt_grammar2c.txt

dune exec bin/simple_grammar.exe -- \ --llamacpp \ -u "http://localhost:8080" \ -s "grammar1${DS}" \ -g $GRAMMAR \ -p $PROMPT_NAME \ -x ".txt" \ -n 6