mirror of
https://github.com/ggerganov/llama.cpp.git
synced 2024-12-27 06:39:25 +01:00
server : handle content array in chat API (#8449)
* server : handle content array in chat API * Update examples/server/utils.hpp Co-authored-by: Xuan Son Nguyen <thichthat@gmail.com> --------- Co-authored-by: Xuan Son Nguyen <thichthat@gmail.com>
This commit is contained in:
parent
6af51c0d96
commit
4e24cffd8c
@ -122,8 +122,26 @@ inline std::string format_chat(const struct llama_model * model, const std::stri
|
|||||||
|
|
||||||
for (size_t i = 0; i < messages.size(); ++i) {
|
for (size_t i = 0; i < messages.size(); ++i) {
|
||||||
const auto & curr_msg = messages[i];
|
const auto & curr_msg = messages[i];
|
||||||
|
|
||||||
std::string role = json_value(curr_msg, "role", std::string(""));
|
std::string role = json_value(curr_msg, "role", std::string(""));
|
||||||
std::string content = json_value(curr_msg, "content", std::string(""));
|
|
||||||
|
std::string content;
|
||||||
|
if (curr_msg.contains("content")) {
|
||||||
|
if (curr_msg["content"].is_string()) {
|
||||||
|
content = curr_msg["content"].get<std::string>();
|
||||||
|
} else if (curr_msg["content"].is_array()) {
|
||||||
|
for (const auto & part : curr_msg["content"]) {
|
||||||
|
if (part.contains("text")) {
|
||||||
|
content += "\n" + part["text"].get<std::string>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw std::runtime_error("Invalid 'content' type (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw std::runtime_error("Missing 'content' (ref: https://github.com/ggerganov/llama.cpp/issues/8367)");
|
||||||
|
}
|
||||||
|
|
||||||
chat.push_back({role, content});
|
chat.push_back({role, content});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user