| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <!DOCTYPE html>
- <html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1">
- <title>测试</title>
- <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>
- </head><body>
- <h3>药典AI 连接测试</h3>
- <input id="q" placeholder="输入问题" style="padding:8px;width:70%;border:1px solid #ccc;border-radius:6px">
- <button onclick="go()" style="padding:8px 16px;background:#002FA7;color:#fff;border:none;border-radius:6px;cursor:pointer">发送</button>
- <div id="log">等待输入...</div>
- <script>
- const API='http://localhost:8000';
- const TOKEN='eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0ZXN0IiwiZXhwIjoxNzgzODM2NjQyLCJpYXQiOjE3ODM3NTAyNDJ9.O5mj-uQKCu1Bx3bpWap8Xs52XJPRN2YC5DbxGIGTRF8';
- function log(m){document.getElementById('log').textContent+=m+'\n'}
- async function go(){
- const q=document.getElementById('q').value.trim();
- if(!q)return;
- log('✅ 发送: '+q);
- document.getElementById('log').textContent='发送中...';
- try{
- const r=await fetch(API+'/api/v1/chat/stream',{
- method:'POST',
- headers:{'Content-Type':'application/json','Authorization':'Bearer '+TOKEN},
- body:JSON.stringify({message:q})
- });
- log('连接成功,开始接收...');
- const reader=r.body.getReader();
- const d=new TextDecoder(); let buf='', txt='';
- while(true){
- const{value,done}=await reader.read();
- if(done)break;
- buf+=d.decode(value,{stream:true});
- const lines=buf.split('\n'); buf=lines.pop()||'';
- for(const l of lines){
- if(l.startsWith('event:'))continue;
- if(!l.startsWith('data:'))continue;
- const v=l.slice(6);
- if(v==='[DONE]')continue;
- txt+=v;
- document.getElementById('log').textContent='接收中...\n'+txt.slice(-200);
- }
- }
- log('\n✅ 完成');
- }catch(e){log('❌ 错误: '+e.message);}
- }
- </script></body></html>
|