ToolCalled
{tc.get("name", "")}: {json.dumps(result, ensure_ascii=False)}
')
except:
pass
full_answer += "\n" + "\n".join(tool_results) + "\n"
placeholder.markdown(process_assistant_content(full_answer, is_streaming=True), unsafe_allow_html=True)
new_prompt = tokenizer.apply_chat_template(st.session_state.chat_messages, **template_kwargs)
inputs = tokenizer(new_prompt, return_tensors="pt", truncation=True).to(device)
streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
generation_kwargs["input_ids"] = inputs.input_ids
generation_kwargs["attention_mask"] = inputs.attention_mask
generation_kwargs["max_length"] = inputs.input_ids.shape[1] + st.session_state.max_new_tokens
generation_kwargs["streamer"] = streamer
Thread(target=model.generate, kwargs=generation_kwargs).start()
answer = ""
for new_text in streamer:
answer += new_text
placeholder.markdown(process_assistant_content(full_answer + answer, is_streaming=True), unsafe_allow_html=True)
full_answer += answer
answer = full_answer
messages.append({"role": "assistant", "content": answer})
st.session_state.chat_messages.append({"role": "assistant", "content": answer})
if __name__ == "__main__":
main()