備忘錄_20160105(定位) 修改 回首頁

程式 2025-12-19 14:28:09 1766125690 100
ollama,從前端的 javascript 執行 (part2)

ollama,從前端的 javascript 執行 (part2)
file:/// 可以存取 http://,而 https:// 可以存取 https://
<!doctype html>
<html lang="zh-Hant-TW">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <title>測試LLM</title>
    <style>
#inpUrl
{
  width: 40em;
}

textarea
{
  width: 80vw;
  height: 13em;
}
    </style>
  </head>
  <body>
    <div>
      <table>
        <tr>
          <td>url</td>
          <td><input type="text" name="inpUrl" id="inpUrl" value="http://192.168.1.10:11434/api/generate"></td>
        </tr>
        <tr>
          <td>model</td>
          <td>
            <select name="selModel" id="selModel">
              <option>llama3.2:1b</option>
              <option>gemma3:1b</option>
              <option selected>gemma3:12b</option>
              <option>deepseek-r1:1.5b</option>
            </select>
          </td>
        </tr>
        <tr>
          <td>prompt</td>
          <td>
            <textarea name="taInput" id="taInput">請把下面的句子拆分成 客戶名稱,產品名稱,數量,單價。沒有提到的部分請留白。

屏東衛生所訂破傷風疫苗20盒,價格照舊,請備註明天上午到貨,謝謝。
            </textarea>
          </td>
        </tr>
        <tr>
          <td rowspan="2"><button type="button" onclick="gototest();">送出</button></td>
          <td><textarea id="divResult"></textarea></td>
        </tr>
        <tr>
          <td><textarea id="divConversation"></textarea></td>
        </tr>
      </table>
    </div>
    
    <script>

// 執行函式 - 注意同源政策(CORS)的限制!
async function gototest()
{
  var strPrompt=document.getElementById("taInput").value;
  var strUrl=document.getElementById("inpUrl").value;
  var strModel=document.getElementById("selModel").value;
  //var strPrompt="請幫我說明一下下面的敘述。\n\n佛以此願行。與眾生莊嚴四種淨土。\n又以此願行。莊嚴成一句洪名。 ";
  
  var oJsonInput={ model: strModel, prompt: strPrompt, stream: false };
  
  var strText=await fetchOllamaResponseSync(strUrl, oJsonInput);
  document.getElementById("divResult").value=strText;
  
  var oJson=JSON.parse(strText);
  document.getElementById("divConversation").value=oJson.response;
}

async function fetchOllamaResponseSync(strUrl, oJsonInput) 
{
  document.getElementById("divResult").value="please wait...";
  document.getElementById("divConversation").value="please wait...";
  try
  {
    const oResponse=await fetch(
      strUrl,
      {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(oJsonInput)
      }
    );
    
    if(!oResponse.ok)
    {
      throw new Error(`HTTP error! Status: ${oResponse.status}`);
    }
    
    const strText=await oResponse.text();
    return strText;
  }
  catch(oError) 
  {
    return "Error fetching Ollama response:"+oError;
  }
}

    </script>
  </body>
</html>