修复一些bug
This commit is contained in:
parent
cb924f28b9
commit
621d393bf2
@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.util.Log;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
@ -58,7 +59,8 @@ public class MessageAdapter extends RecyclerView.Adapter<MessageAdapter.MessageV
|
||||
Message message = messages.get(position);
|
||||
if (message.getIsuser() == 1) { // user
|
||||
holder.textViewMessage.setText(message.getContent());
|
||||
if(message.getCite()!=""){
|
||||
if(message.getCite()!=""&&message.getCite()!=null){
|
||||
Log.d("test",message.getCite());
|
||||
holder.messageUser_Cite.setVisibility(View.VISIBLE);
|
||||
holder.messageUser_Cite.setText(message.getCite());
|
||||
}
|
||||
|
@ -133,6 +133,7 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
|
||||
private void sendandStoreMessage(String text) {
|
||||
clearQuestionsVisibility();
|
||||
editTextMessage.setHint("请求中...");
|
||||
messageList.add(new Message(text, 1, cite)); // User message
|
||||
messageAdapter.notifyItemInserted(messageList.size() - 1);
|
||||
editTextMessage.setText("");
|
||||
@ -163,6 +164,7 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
});
|
||||
}
|
||||
|
||||
//初始化视图
|
||||
private void setupViews() {
|
||||
recyclerView = findViewById(R.id.chatRecyclerView);
|
||||
editTextMessage = findViewById(R.id.inputEditText);
|
||||
@ -186,8 +188,13 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
// 根据输入框是否有文本来禁用或启用按钮
|
||||
if(editTextMessage.getHint()=="请求中..."){
|
||||
buttonSend.setEnabled(true);
|
||||
}
|
||||
else{
|
||||
buttonSend.setEnabled(s.toString().trim().length() > 0);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
@ -209,7 +216,9 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
public void done(List<ChatMessage_bmob> messages, BmobException e) {
|
||||
if (e == null && messages != null && !messages.isEmpty()) {
|
||||
lastUserQuestion = messages.get(0).getContent(); // 获取最新的用户消息
|
||||
// 可以在此处更新界面或处理消息
|
||||
if(messages.get(0).getCite()!=""&&messages.get(0).getCite()!=null){
|
||||
lastUserQuestion= "请你根据《" + bookName + "》书中的这段内容:" + messages.get(0).getCite() + ",回答我这个提问:" + lastUserQuestion;
|
||||
}
|
||||
} else {
|
||||
Log.e("ChatActivity", "No recent user message found, or error fetching data: " + (e != null ? e.getMessage() : "No details"));
|
||||
}
|
||||
@ -350,7 +359,6 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
textView_Cite.setVisibility(View.GONE);
|
||||
messageText = "请你根据《" + bookName + "》书中的这段内容:" + cite + ",回答我这个提问:" + messageText;
|
||||
}
|
||||
lastUserQuestion = messageText;
|
||||
OkHttpClient client = new OkHttpClient.Builder()
|
||||
.connectTimeout(60, TimeUnit.SECONDS)
|
||||
.readTimeout(60, TimeUnit.SECONDS)
|
||||
@ -363,31 +371,31 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
.build();
|
||||
ChatGPTService service = retrofit.create(ChatGPTService.class);
|
||||
List<ChatRequest.Message> messages = new ArrayList<>();
|
||||
String prompt = "你好!我是你的阅读助手。请确保你的回答准确而精炼。";
|
||||
String prompt = "你是一个专业的阅读助手。请确保你的回答准确而精炼。当用户想要提问其他非书籍相关内容时,你应该友好礼貌地将其引导回《"+bookName+"》的讨论中";
|
||||
|
||||
if (messageText.equals("请告诉我更多内容。") && !lastUserQuestion.isEmpty()) {
|
||||
// 特别关注用户的上一个问题
|
||||
prompt += "你之前问了关于《" + bookName + "》的'" + lastUserQuestion + "'。关于这个问题,你需要更多的哪方面信息?";
|
||||
prompt += "用户之前问了关于《" + bookName + "》的'" + lastUserQuestion + "'。关于这个问题,请你对你原先的回答进行补充说明?";
|
||||
} else if (!lastUserQuestion.isEmpty()) {
|
||||
// 处理正常的用户问题
|
||||
prompt += "关于你之前的问题:" + lastUserQuestion + ",你需要我提供更多的信息吗?或者,你有其他关于《" + bookName + "》的新问题吗?";
|
||||
prompt += "用户提出的上一个问题是:" + lastUserQuestion + ",你可以有个了解,准备应对用户提出的新问题。";
|
||||
} else {
|
||||
// 没有历史问题的情况
|
||||
prompt += "我可以帮助你解答关于《" + bookName + "》的各种问题,比如内容概述、作者信息、主要主题和角色分析等。请随时向我提问,现在,你有什么问题吗?";
|
||||
}
|
||||
messages.add(new ChatRequest.Message("system", prompt));
|
||||
messages.addAll(loadMessagesFromDatabase(bookName, userid));
|
||||
messages.add(new ChatRequest.Message("user", messageText)); // 添加用户消息
|
||||
Log.d("zytest", messageText);
|
||||
messages.add(new ChatRequest.Message("user", messageText+"。你的回答不应超过250个字。")); // 添加用户消息
|
||||
ChatRequest request = new ChatRequest(messages); // 使用消息列表创建请求
|
||||
request.setModel("gpt-4-turbo"); // 根据需要选择不同的模型
|
||||
request.setMaxTokens(50); // 设置最大 token 数,根据需要调整
|
||||
request.setTemperature(0.5); // 设置适当的温度
|
||||
currentCall = service.postMessage(request);
|
||||
String finalMessageText = messageText;
|
||||
currentCall.enqueue(new Callback<ChatResponse>() {
|
||||
@Override
|
||||
public void onResponse(Call<ChatResponse> call, Response<ChatResponse> response) {
|
||||
|
||||
lastUserQuestion= finalMessageText;
|
||||
if (response.isSuccessful() && response.body() != null) {
|
||||
ChatResponse chatResponse = response.body();
|
||||
if (chatResponse.choices != null && !chatResponse.choices.isEmpty()) {
|
||||
@ -395,6 +403,7 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
String reply = message.content; // 这是从 GPT-3.5 响应中提取的内容
|
||||
runOnUiThread(() -> {
|
||||
cite = "";
|
||||
editTextMessage.setHint("与阅读小助手交谈...");
|
||||
messageList.add(new Message(reply, 0, ""));
|
||||
messageAdapter.notifyDataSetChanged();
|
||||
moveToNewest();
|
||||
@ -418,6 +427,7 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
public void onFailure(Call<ChatResponse> call, Throwable t) {
|
||||
if(isStop==true){
|
||||
buttonSend.setImageResource(R.drawable.ic_send);
|
||||
editTextMessage.setHint("与阅读小助手交谈...");
|
||||
isStop=false;
|
||||
}
|
||||
else {
|
||||
@ -457,9 +467,7 @@ public class ChatWithGptActivity extends AppCompatActivity implements MessageAda
|
||||
//回调函数,重新生成回答
|
||||
@Override
|
||||
public void onRegenerateClick(int position) {
|
||||
questionView1.setVisibility(View.GONE);
|
||||
questionView2.setVisibility(View.GONE);
|
||||
questionView3.setVisibility(View.GONE);
|
||||
clearQuestionsVisibility();
|
||||
BmobQuery<ChatMessage_bmob> bmobQuery = new BmobQuery<>();
|
||||
bmobQuery.addWhereEqualTo("relatedBook", bookName);
|
||||
bmobQuery.addWhereEqualTo("userid", userid);
|
||||
|
@ -95,7 +95,7 @@
|
||||
android:id="@+id/chatbot_title"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="6dp"
|
||||
android:layout_margin="6dp"
|
||||
android:gravity="center"
|
||||
android:text="书名"
|
||||
android:textSize="22sp"
|
||||
|
Loading…
x
Reference in New Issue
Block a user