Skip to Content.
Sympa Menu

coq-club - [Coq-Club] LLM query in Ltac2

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

[Coq-Club] LLM query in Ltac2


Chronological Thread 
  • From: Abhishek Anand <abhishek.anand.iitg AT gmail.com>
  • To: coq-club <coq-club AT inria.fr>
  • Subject: [Coq-Club] LLM query in Ltac2
  • Date: Wed, 19 Jun 2024 19:07:00 -0400
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=abhishek.anand.iitg AT gmail.com; spf=Pass smtp.mailfrom=abhishek.anand.iitg AT gmail.com; spf=None smtp.helo=postmaster AT mail-wr1-f52.google.com
  • Ironport-data: A9a23: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 tVgD7XSyqhIxIC9FYB6ETk0xq8=
  • Ironport-hdrordr: A9a23:+2vn3a/SklXsruDVXItuk+DVI+orL9Y04lQ7vn2ZKCYlFfBw8v rFoB11726WtN98YhEdcLO7WZVoI0msl6KdiLN5VdyftWLdyQ6Vxe9ZnO/fKv7bdxEWNNQx6U 6tScdD4RTLY2RHsQ==
  • Ironport-phdr: A9a23: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 UNhPTbAAblWiuk5HV0=
  • Ironport-sdr: 667364b9_7L5g0LFzKaEFaoYlpNc+pHBaIrafynrLrjj6oovyx+LAVXo +vag+h6iMqoC8DVznQf8PHNSiwIgHPB/81mQhig==

Has anyone written an Ltac2 function (e.g. string -> string, or string list -> list) to query LLMs like chatgpt?
We tried to write it but ran into plugin build issues minimized here :

[abhishek@optiplex ltac2-llm]$ cat theories/llm.v
Require Import Ltac2.Ltac2.

Declare ML Module "ltac2-llm-plugin.plugin".

Module LLM.

 Ltac2 @ external query_gpt : string -> string :=
   "ltac2_llm" "guery_gpt".

End LLM.

Ltac2 Eval LLM.query_gpt "write an Inductive to define the AST of C++".


[abhishek@optiplex ltac2-llm]$ cat plugin/main.ml
open Ltac2_plugin
open Tac2ffi
open Tac2externals
open Openai

let api_key = Sys.getenv "OPENAI_API_KEY"
let client = Client.create api_key

let bytes_fn_of_string (f: string->string) (b:bytes) :bytes =
 Bytes.of_string (f (Bytes.to_string b))

let llmquery (s:string) : string =
 Lwt_main.run (Chat_completion.(
 send
   client
   ~temperature:0.0
   ~model:"gpt-4o"
   ~messages:
     [ { role = `System; content = "You are an expert in logic, formal methods, constructive type theory, dependent type theory, Coq (Gallina, Ltac, Ltac2)" }
     ; { role = `User; content = s }
     ]
   ()))

let define s =
 define Tac2expr.{ mltac_plugin = "ltac2_llm"; mltac_tactic = s }

let _ =
 define "query_gpt" (bytes @-> ret bytes) @@ fun s ->
   bytes_fn_of_string llmquery s
[abhishek@optiplex ltac2-llm]$
 


Thanks,


  • [Coq-Club] LLM query in Ltac2, Abhishek Anand, 06/20/2024

Archive powered by MHonArc 2.6.19+.

Top of Page