Maxuss / chatgpt_rs

OpenAI's ChatGPT API wrapper for Rust 🦀
MIT License
150 stars 39 forks source link

how to use functions feature within continuous conversation #70

Open For-December opened 1 year ago

For-December commented 1 year ago

Thank you for developing this powerful lib! It always works well, but when I try to use functions feature, I' m in trouble. I want to fulfill a continuous conversation with functions feature, for instance:

Just like the example: https://openai.com/blog/function-calling-and-other-api-updates image

Here is my test code:

  // build conversation and send to openAI
  conversation.add_function(get_current_time()).unwrap();
  let res = conversation
      .send_message_functions(ask)  // ask is "what' s the time now?"
      .await
      .unwrap()
      .message_choices;

about get_current_time:

/// get current time
///
/// * time - the time that user asks
#[gpt_function]
async fn get_current_time(time: String) -> Value {
    println!("AI uses param: {time}");
    return Ok(json!({
        "time":"10:30"
    }));
}

my function ( get_current_time ) was called successfully, but I could' t get a expected reply about current time.

message_functions' length is 1, content is empty str called message().content also return empty str

history like this: image

maybe need this?( I guess...) image and when I called send_message_functions again, error occur: image

I tried again and again, but couldn't be able to solve it, hope to get help

For-December commented 1 year ago

and src\api\chatgpt:95: 14 is here image

Maxuss commented 1 year ago

Could you check if the issue still persists with version from the function-invocation-fix branch?

For-December commented 1 year ago

@Maxuss I write a testing code just now, the issue still persists. But I got a warning while running, do I use functions feature correctly? Here are all about testing code:

See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies] chatgpt_rs = { git = "https://github.com/Maxuss/chatgpt_rs", features = [ "functions", ], branch = "function-invocation-fix" } reqwest = { version = "0.11", features = ["json", "blocking"] } tokio = { version = "1", features = ["full"] } serde_json = { version = "1.0", features = ["raw_value"] } serde = { version = "1.0", features = ["derive"] }


- All output
![image](https://github.com/Maxuss/chatgpt_rs/assets/100057209/5bf01470-241e-4d01-ab56-8166564957f8)