svilupp / PromptingTools.jl

Streamline your life using PromptingTools.jl, the Julia package that simplifies interacting with large language models.
https://svilupp.github.io/PromptingTools.jl/dev/
MIT License
96 stars 9 forks source link

Broken on Julia 1.11beta2 #158

Open VarLad opened 1 month ago

VarLad commented 1 month ago

Pasting the stacktrace here:

ERROR: LoadError: MethodError: no method matching doc(::Type{PromptingTools.X123})
The function `doc` exists, but no method is defined for this combination of argument types.
Stacktrace:
  [1] extract_docstring(type::Type; max_description_length::Int64)
    @ PromptingTools ~/.julia/packages/PromptingTools/vQqsQ/src/extraction.jl:45
  [2] extract_docstring
    @ ~/.julia/packages/PromptingTools/vQqsQ/src/extraction.jl:41 [inlined]
  [3] to_json_schema(orig_type::Type; max_description_length::Int64)
    @ PromptingTools ~/.julia/packages/PromptingTools/vQqsQ/src/extraction.jl:70
  [4] function_call_signature(datastructtype::Type; max_description_length::Int64)
    @ PromptingTools ~/.julia/packages/PromptingTools/vQqsQ/src/extraction.jl:170
  [5] function_call_signature
    @ ~/.julia/packages/PromptingTools/vQqsQ/src/extraction.jl:164 [inlined]
  [6] aiextract(prompt_schema::PromptingTools.TestEchoOpenAISchema, prompt::String; return_type::Type, verbose::Bool, api_key::String, model::String, return_all::Bool, dry_run::Bool, conversation::Vector{PromptingTools.AbstractMessage}, http_kwargs::@NamedTuple{retry_non_idempotent::Bool, retries::Int64, readtimeout::Int64}, api_kwargs::@NamedTuple{tool_choice::String}, kwargs::@Kwargs{it::String})
    @ PromptingTools ~/.julia/packages/PromptingTools/vQqsQ/src/llm_openai.jl:1069
  [7] top-level scope
    @ ~/.julia/packages/PromptingTools/vQqsQ/src/precompilation.jl:26
  [8] include(mod::Module, _path::String)
    @ Base ./Base.jl:558
  [9] include
    @ ~/.julia/packages/PromptingTools/vQqsQ/src/PromptingTools.jl:1 [inlined]
 [10] macro expansion
    @ ~/.julia/packages/PrecompileTools/L8A3n/src/workloads.jl:78 [inlined]
 [11] (::PromptingTools.var"#330#331")()
    @ PromptingTools ~/.julia/packages/PromptingTools/vQqsQ/src/PromptingTools.jl:92
 [12] with_logstate(f::PromptingTools.var"#330#331", logstate::Base.CoreLogging.LogState)
    @ Base.CoreLogging ./logging.jl:522
 [13] with_logger(f::Function, logger::Base.CoreLogging.NullLogger)
    @ Base.CoreLogging ./logging.jl:632
 [14] top-level scope
    @ ~/.julia/packages/PromptingTools/vQqsQ/src/PromptingTools.jl:91
 [15] include
    @ ./Base.jl:558 [inlined]
 [16] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::String)
    @ Base ./loading.jl:2721
 [17] top-level scope
    @ stdin:4
in expression starting at /var/home/varlad/.julia/packages/PromptingTools/vQqsQ/src/precompilation.jl:26
in expression starting at /var/home/varlad/.julia/packages/PromptingTools/vQqsQ/src/PromptingTools.jl:1
in expression starting at stdin:4
ERROR: LoadError: Failed to precompile PromptingTools [670122d1-24a8-4d70-bfce-740807c42192] to "/var/home/varlad/.julia/compiled/v1.11/PromptingTools/jl_VjM90A".
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:35
  [2] compilecache(pkg::Base.PkgId, path::String, internal_stderr::IO, internal_stdout::IO, keep_loaded_modules::Bool; flags::Cmd, cacheflags::Base.CacheFlags, reasons::Dict{String, Int64})
    @ Base ./loading.jl:3002
  [3] (::Base.var"#1074#1075"{Base.PkgId})()
    @ Base ./loading.jl:2389
  [4] mkpidlock(f::Base.var"#1074#1075"{Base.PkgId}, at::String, pid::Int32; kwopts::@Kwargs{stale_age::Int64, wait::Bool})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.11.0-beta1+0.x64.linux.gnu/share/julia/stdlib/v1.11/FileWatching/src/pidfile.jl:95
  [5] #mkpidlock#6
    @ ~/.julia/juliaup/julia-1.11.0-beta1+0.x64.linux.gnu/share/julia/stdlib/v1.11/FileWatching/src/pidfile.jl:90 [inlined]
  [6] trymkpidlock(::Function, ::Vararg{Any}; kwargs::@Kwargs{stale_age::Int64})
    @ FileWatching.Pidfile ~/.julia/juliaup/julia-1.11.0-beta1+0.x64.linux.gnu/share/julia/stdlib/v1.11/FileWatching/src/pidfile.jl:116
  [7] #invokelatest#2
    @ ./essentials.jl:1032 [inlined]
  [8] invokelatest
    @ ./essentials.jl:1027 [inlined]
  [9] maybe_cachefile_lock(f::Base.var"#1074#1075"{Base.PkgId}, pkg::Base.PkgId, srcpath::String; stale_age::Int64)
    @ Base ./loading.jl:3525
 [10] maybe_cachefile_lock
    @ ./loading.jl:3522 [inlined]
 [11] _require(pkg::Base.PkgId, env::String)
    @ Base ./loading.jl:2385
 [12] __require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2217
 [13] #invoke_in_world#3
    @ ./essentials.jl:1064 [inlined]
 [14] invoke_in_world
    @ ./essentials.jl:1061 [inlined]
 [15] _require_prelocked(uuidkey::Base.PkgId, env::String)
    @ Base ./loading.jl:2208
 [16] macro expansion
    @ ./loading.jl:2148 [inlined]
 [17] macro expansion
    @ ./lock.jl:273 [inlined]
 [18] __require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2105
 [19] #invoke_in_world#3
    @ ./essentials.jl:1064 [inlined]
 [20] invoke_in_world
    @ ./essentials.jl:1061 [inlined]
 [21] require(into::Module, mod::Symbol)
    @ Base ./loading.jl:2098
 [22] include
    @ ./Base.jl:558 [inlined]
 [23] include_package_for_output(pkg::Base.PkgId, input::String, depot_path::Vector{String}, dl_load_path::Vector{String}, load_path::Vector{String}, concrete_deps::Vector{Pair{Base.PkgId, UInt128}}, source::Nothing)
    @ Base ./loading.jl:2721
 [24] top-level scope
    @ stdin:4
in expression starting at /var/home/varlad/.julia/packages/AIHelpMe/fgE4v/src/AIHelpMe.jl:1
in expression starting at stdin:4
svilupp commented 1 month ago

Thanks for flagging!

svilupp commented 2 weeks ago

Quick update -- it's still not possible to use with 1.11, because HTTP.jl isn't compatible yet (https://github.com/JuliaWeb/HTTP.jl/issues/1167).

I've at least fixed the originally reported error -- it seems that REPL stdlib has been removed from 1.11 and a method that I was using from Base.Docs was actually extended via REPL package.

I'll keep this opened until the 1.11 compatibility is fixed.