Skip to content

Somehow basic example doesn't work with gpt4o or any other openai model. #12

@Sixzero

Description

@Sixzero

MWE:

using PromptingTools
const PT = PromptingTools

cb = PT.StreamCallback()

aigenerate("Say hi to me", model="gpt4o", streamcallback=cb)

Error:

ERROR: HTTP.RequestError:
HTTP.Request:
HTTP.Messages.Request:
"""
POST /v1/chat/completions HTTP/1.1
Authorization: ******
Content-Type: application/json
Host: api.openai.com
Accept: */*
User-Agent: HTTP.jl/1.11.3
Accept-Encoding: gzip
Transfer-Encoding: chunked

[Message Body was streamed]"""Underlying error:
AssertionError: Content-Type header include the type text/event-stream
Stacktrace:
  [1] (::HTTP.ConnectionRequest.var"#connections#4"{…})(req::HTTP.Messages.Request; proxy::Nothing, socket_type::Type, socket_type_tls::Nothing, readtimeout::Int64, connect_timeout::Int64, logerrors::Bool, logtag::Nothing, closeimmediately::Bool, kw::@Kwargs{…})
    @ HTTP.ConnectionRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ConnectionRequest.jl:143
  [2] connections
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ConnectionRequest.jl:60 [inlined]
  [3] (::Base.var"#106#108"{…})(args::HTTP.Messages.Request; kwargs::@Kwargs{…})
    @ Base ./error.jl:300
  [4] (::HTTP.RetryRequest.var"#manageretries#3"{…})(req::HTTP.Messages.Request; retry::Bool, retries::Int64, retry_delays::ExponentialBackOff, retry_check::Function, retry_non_idempotent::Bool, kw::@Kwargs{…})
    @ HTTP.RetryRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RetryRequest.jl:75
  [5] manageretries
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RetryRequest.jl:30 [inlined]
  [6] (::HTTP.CookieRequest.var"#managecookies#4"{…})(req::HTTP.Messages.Request; cookies::Bool, cookiejar::HTTP.Cookies.CookieJar, kw::@Kwargs{…})
    @ HTTP.CookieRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/CookieRequest.jl:42
  [7] (::HTTP.HeadersRequest.var"#defaultheaders#2"{…})(req::HTTP.Messages.Request; iofunction::Function, decompress::Nothing, basicauth::Bool, detect_content_type::Bool, canonicalize_headers::Bool, kw::@Kwargs{…})
    @ HTTP.HeadersRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/HeadersRequest.jl:71
  [8] defaultheaders
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/HeadersRequest.jl:14 [inlined]
  [9] (::HTTP.RedirectRequest.var"#redirects#3"{…})(req::HTTP.Messages.Request; redirect::Bool, redirect_limit::Int64, redirect_method::Nothing, forwardheaders::Bool, response_stream::Nothing, kw::@Kwargs{…})
    @ HTTP.RedirectRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RedirectRequest.jl:25
 [10] redirects
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RedirectRequest.jl:14 [inlined]
 [11] (::HTTP.MessageRequest.var"#makerequest#3"{…})(method::String, url::URIs.URI, headers::Vector{…}, body::Nothing; copyheaders::Bool, response_stream::Nothing, http_version::HTTP.Strings.HTTPVersion, verbose::Int64, kw::@Kwargs{…})
    @ HTTP.MessageRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/MessageRequest.jl:35
 [12] makerequest
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/MessageRequest.jl:24 [inlined]
 [13] request(stack::HTTP.MessageRequest.var"#makerequest#3"{…}, method::String, url::String, h::Vector{…}, b::Nothing, q::Nothing; headers::Vector{…}, body::Nothing, query::Nothing, kw::@Kwargs{…})
    @ HTTP ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:457
 [14] #request#20
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:315 [inlined]
 [15] request
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:313 [inlined]
 [16] open
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:579 [inlined]
 [17] streamed_request!(cb::StreamCallbacks.StreamCallback{…}, url::String, headers::Vector{…}, input::IOBuffer; kwargs::@Kwargs{…})
    @ StreamCallbacks ~/repo/jl_pkgs/StreamCallbacks.jl/src/shared_methods.jl:197
 [18] streamed_request!
    @ ~/repo/jl_pkgs/StreamCallbacks.jl/src/shared_methods.jl:195 [inlined]
 [19] create_chat(schema::PromptingTools.OpenAISchema, api_key::String, model::String, conversation::Vector{…}; http_kwargs::@NamedTuple{…}, streamcallback::StreamCallbacks.StreamCallback{…}, kwargs::@Kwargs{})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_openai_schema_defs.jl:42
 [20] create_chat
    @ ~/repo/PromptingTools.jl/src/llm_openai_schema_defs.jl:27 [inlined]
 [21] macro expansion
    @ ./timing.jl:421 [inlined]
 [22] aigenerate(prompt_schema::PromptingTools.OpenAISchema, prompt::String; verbose::Bool, api_key::String, model::String, return_all::Bool, dry_run::Bool, conversation::Vector{…}, streamcallback::StreamCallbacks.StreamCallback{…}, no_system_message::Bool, name_user::Nothing, name_assistant::Nothing, http_kwargs::@NamedTuple{…}, api_kwargs::@NamedTuple{}, kwargs::@Kwargs{})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_openai.jl:351
 [23] aigenerate(prompt::String; model::String, kwargs::@Kwargs{streamcallback::StreamCallbacks.StreamCallback{Base.TTY}})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_interface.jl:511
 [24] top-level scope
    @ ~/repo/EasyRAGStore.jl/test/asdf.jl:339

caused by: AssertionError: Content-Type header include the type text/event-stream
Stacktrace:
  [1] (::StreamCallbacks.var"#18#21"{…})(stream::HTTP.Streams.Stream{…})
    @ StreamCallbacks ~/repo/jl_pkgs/StreamCallbacks.jl/src/shared_methods.jl:214
  [2] macro expansion
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/StreamRequest.jl:65 [inlined]
  [3] macro expansion
    @ ./task.jl:498 [inlined]
  [4] streamlayer(stream::HTTP.Streams.Stream{…}; iofunction::StreamCallbacks.var"#18#21"{…}, decompress::Nothing, logerrors::Bool, logtag::Nothing, timedout::ConcurrentUtilities.TimedOut{…}, kw::@Kwargs{…})
    @ HTTP.StreamRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/StreamRequest.jl:35
  [5] streamlayer
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/StreamRequest.jl:21 [inlined]
  [6] (::HTTP.ExceptionRequest.var"#exceptions#2"{…})(stream::HTTP.Streams.Stream{…}; status_exception::Bool, timedout::ConcurrentUtilities.TimedOut{…}, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
    @ HTTP.ExceptionRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ExceptionRequest.jl:14
  [7] exceptions
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ExceptionRequest.jl:13 [inlined]
  [8] #2
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/TimeoutRequest.jl:22 [inlined]
  [9] macro expansion
    @ ~/.julia/packages/ConcurrentUtilities/ofY4K/src/try_with_timeout.jl:92 [inlined]
 [10] (::ConcurrentUtilities.var"#2#4"{HTTP.Messages.Response, Channel{…}, HTTP.TimeoutRequest.var"#2#5"{…}, Timer})()
    @ ConcurrentUtilities ~/.julia/packages/ConcurrentUtilities/ofY4K/src/ConcurrentUtilities.jl:10
Stacktrace:
  [1] try_yieldto(undo::typeof(Base.ensure_rescheduled))
    @ Base ./task.jl:958
  [2] wait()
    @ Base ./task.jl:1022
  [3] wait(c::Base.GenericCondition{ReentrantLock}; first::Bool)
    @ Base ./condition.jl:130
  [4] wait
    @ ./condition.jl:125 [inlined]
  [5] take_unbuffered(c::Channel{HTTP.Messages.Response})
    @ Base ./channels.jl:510
  [6] take!
    @ ./channels.jl:487 [inlined]
  [7] try_with_timeout(f::Function, timeout::Int64, ::Type{HTTP.Messages.Response})
    @ ConcurrentUtilities ~/.julia/packages/ConcurrentUtilities/ofY4K/src/try_with_timeout.jl:99
  [8] (::HTTP.TimeoutRequest.var"#timeouts#3"{…})(stream::HTTP.Streams.Stream{…}; readtimeout::Int64, logerrors::Bool, logtag::Nothing, kw::@Kwargs{…})
    @ HTTP.TimeoutRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/TimeoutRequest.jl:21
  [9] (::HTTP.ConnectionRequest.var"#connections#4"{…})(req::HTTP.Messages.Request; proxy::Nothing, socket_type::Type, socket_type_tls::Nothing, readtimeout::Int64, connect_timeout::Int64, logerrors::Bool, logtag::Nothing, closeimmediately::Bool, kw::@Kwargs{…})
    @ HTTP.ConnectionRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ConnectionRequest.jl:122
 [10] connections
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/ConnectionRequest.jl:60 [inlined]
 [11] (::Base.var"#106#108"{…})(args::HTTP.Messages.Request; kwargs::@Kwargs{…})
    @ Base ./error.jl:300
 [12] (::HTTP.RetryRequest.var"#manageretries#3"{…})(req::HTTP.Messages.Request; retry::Bool, retries::Int64, retry_delays::ExponentialBackOff, retry_check::Function, retry_non_idempotent::Bool, kw::@Kwargs{…})
    @ HTTP.RetryRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RetryRequest.jl:75
 [13] manageretries
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RetryRequest.jl:30 [inlined]
 [14] (::HTTP.CookieRequest.var"#managecookies#4"{…})(req::HTTP.Messages.Request; cookies::Bool, cookiejar::HTTP.Cookies.CookieJar, kw::@Kwargs{…})
    @ HTTP.CookieRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/CookieRequest.jl:42
 [15] (::HTTP.HeadersRequest.var"#defaultheaders#2"{…})(req::HTTP.Messages.Request; iofunction::Function, decompress::Nothing, basicauth::Bool, detect_content_type::Bool, canonicalize_headers::Bool, kw::@Kwargs{…})
    @ HTTP.HeadersRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/HeadersRequest.jl:71
 [16] defaultheaders
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/HeadersRequest.jl:14 [inlined]
 [17] (::HTTP.RedirectRequest.var"#redirects#3"{…})(req::HTTP.Messages.Request; redirect::Bool, redirect_limit::Int64, redirect_method::Nothing, forwardheaders::Bool, response_stream::Nothing, kw::@Kwargs{…})
    @ HTTP.RedirectRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RedirectRequest.jl:25
 [18] redirects
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/RedirectRequest.jl:14 [inlined]
 [19] (::HTTP.MessageRequest.var"#makerequest#3"{…})(method::String, url::URIs.URI, headers::Vector{…}, body::Nothing; copyheaders::Bool, response_stream::Nothing, http_version::HTTP.Strings.HTTPVersion, verbose::Int64, kw::@Kwargs{…})
    @ HTTP.MessageRequest ~/.julia/packages/HTTP/4AUPl/src/clientlayers/MessageRequest.jl:35
 [20] makerequest
    @ ~/.julia/packages/HTTP/4AUPl/src/clientlayers/MessageRequest.jl:24 [inlined]
 [21] request(stack::HTTP.MessageRequest.var"#makerequest#3"{…}, method::String, url::String, h::Vector{…}, b::Nothing, q::Nothing; headers::Vector{…}, body::Nothing, query::Nothing, kw::@Kwargs{…})
    @ HTTP ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:457
 [22] #request#20
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:315 [inlined]
 [23] request
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:313 [inlined]
 [24] open
    @ ~/.julia/packages/HTTP/4AUPl/src/HTTP.jl:579 [inlined]
 [25] streamed_request!(cb::StreamCallbacks.StreamCallback{…}, url::String, headers::Vector{…}, input::IOBuffer; kwargs::@Kwargs{…})
    @ StreamCallbacks ~/repo/jl_pkgs/StreamCallbacks.jl/src/shared_methods.jl:197
 [26] streamed_request!
    @ ~/repo/jl_pkgs/StreamCallbacks.jl/src/shared_methods.jl:195 [inlined]
 [27] create_chat(schema::PromptingTools.OpenAISchema, api_key::String, model::String, conversation::Vector{…}; http_kwargs::@NamedTuple{…}, streamcallback::StreamCallbacks.StreamCallback{…}, kwargs::@Kwargs{})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_openai_schema_defs.jl:42
 [28] create_chat
    @ ~/repo/PromptingTools.jl/src/llm_openai_schema_defs.jl:27 [inlined]
 [29] macro expansion
    @ ./timing.jl:421 [inlined]
 [30] aigenerate(prompt_schema::PromptingTools.OpenAISchema, prompt::String; verbose::Bool, api_key::String, model::String, return_all::Bool, dry_run::Bool, conversation::Vector{…}, streamcallback::StreamCallbacks.StreamCallback{…}, no_system_message::Bool, name_user::Nothing, name_assistant::Nothing, http_kwargs::@NamedTuple{…}, api_kwargs::@NamedTuple{}, kwargs::@Kwargs{})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_openai.jl:351
 [31] aigenerate(prompt::String; model::String, kwargs::@Kwargs{streamcallback::StreamCallbacks.StreamCallback{Base.TTY}})
    @ PromptingTools ~/repo/PromptingTools.jl/src/llm_interface.jl:511
 [32] top-level scope
    @ ~/repo/EasyRAGStore.jl/test/asdf.jl:339
Some type information was truncated. Use `show(err)` to see complete types.

I think I am on newest PromptingTools.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions