test.html 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <!DOCTYPE html>
  2. <html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
  3. <title>测试</title>
  4. <style>body{font-family:sans-serif;padding:20px}#log{background:#f5f5f5;padding:12px;border-radius:8px;margin-top:12px;font-size:13px;white-space:pre-wrap}</style>
  5. </head><body>
  6. <h3>药典AI 连接测试</h3>
  7. <input id="q" placeholder="输入问题" style="padding:8px;width:70%;border:1px solid #ccc;border-radius:6px">
  8. <button onclick="go()" style="padding:8px 16px;background:#002FA7;color:#fff;border:none;border-radius:6px;cursor:pointer">发送</button>
  9. <div id="log">等待输入...</div>
  10. <script>
  11. const API='http://localhost:8000';
  12. const TOKEN='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiZXhwIjoxNzgzODM2NjQyLCJpYXQiOjE3ODM3NTAyNDJ9.O5mj-uQKCu1Bx3bpWap8Xs52XJPRN2YC5DbxGIGTRF8';
  13. function log(m){document.getElementById('log').textContent+=m+'\n'}
  14. async function go(){
  15. const q=document.getElementById('q').value.trim();
  16. if(!q)return;
  17. log('✅ 发送: '+q);
  18. document.getElementById('log').textContent='发送中...';
  19. try{
  20. const r=await fetch(API+'/api/v1/chat/stream',{
  21. method:'POST',
  22. headers:{'Content-Type':'application/json','Authorization':'Bearer '+TOKEN},
  23. body:JSON.stringify({message:q})
  24. });
  25. log('连接成功,开始接收...');
  26. const reader=r.body.getReader();
  27. const d=new TextDecoder(); let buf='', txt='';
  28. while(true){
  29. const{value,done}=await reader.read();
  30. if(done)break;
  31. buf+=d.decode(value,{stream:true});
  32. const lines=buf.split('\n'); buf=lines.pop()||'';
  33. for(const l of lines){
  34. if(l.startsWith('event:'))continue;
  35. if(!l.startsWith('data:'))continue;
  36. const v=l.slice(6);
  37. if(v==='[DONE]')continue;
  38. txt+=v;
  39. document.getElementById('log').textContent='接收中...\n'+txt.slice(-200);
  40. }
  41. }
  42. log('\n✅ 完成');
  43. }catch(e){log('❌ 错误: '+e.message);}
  44. }
  45. </script></body></html>