Skip to content

Compatibility with Older APIs (with String content) #189

@EluvK

Description

@EluvK

Description

In the recent update to the dart_openai library (version 5.0.0), the content field in the request body has been changed from String to List<Object>. While this change aligns with OpenAI's latest API updates, it causes compatibility issues with other large model APIs that still expect content to be a String.

Impact

This change prevents users from easily migrating to or using other large model APIs that follow the original OpenAI API format. As a result, users who rely on these APIs are facing difficulties in integrating with the updated dart_openai library. Specifically, the following error is encountered:

Failed to deserialize the JSON body into the target type: messages[1]: invalid type: sequence, expected a string at line 6 column 9

Suggested Solution

To maintain compatibility and ease of migration, I suggest the following:

  1. Provide an option to use either String field.
  2. Introduce a compatibility mode or a configuration setting that allows users to specify the format of the content field.

Example Code

Here is an example of how the library could support both formats: (something like this, I'm a newbie in Dart)

final dynamic content; // Can be either String or List<Object>

// When sending the request
if (content is List<Object>) {
  // Handle List<Object> format
} else if (content is String) {
  // Handle String format
}

This approach would ensure that users can continue to use the library with other large model APIs without any issues.

Additional Context

  • The latest version of dart_openai is 5.0.0.
  • The last version that used String was 4.1.2, and the commit.

I sinicerely hope you can consider this suggestion.

Thank you!

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