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

程式 2025-03-24 17:03:53 1742807033 100
ollama,從前端的 javascript 執行

ollama,從前端的 javascript 執行
(注意,在 ollama 那一台機器上,要設定過 OLLAMA_ORIGINS=*,才不會被 CORS 規則給限制了。)
<script>

// 執行函式 - 注意同源政策(CORS)的限制!
window.onload=async function()
{
  var strUrl="http://192.168.0.99:11434/api/generate";
  var strModel="llama3.1";
  var strPrompt="請幫我說明一下下面的敘述。\n\n佛以此願行。與眾生莊嚴四種淨土。\n又以此願行。莊嚴成一句洪名。 ";
  
  var oJsonInput={ model: strModel, prompt: strPrompt, stream: false };
  
  // 方法一
  fetchOllamaResponseAsync(strUrl, oJsonInput);
  
  // 方法二
  await fetchOllamaResponseSync(strUrl, oJsonInput);
}

function fetchOllamaResponseAsync(strUrl, oJsonInput)
{
  console.log("開始執行非同步方法1!");
  
  fetch(
    strUrl,
    {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify(oJsonInput)
    }
  )
  .then(oResponse => oResponse.json())
  .then(oJson => console.log('1:',oJson.response))
  .catch(oError => console.error(oError));
}

async function fetchOllamaResponseSync(strUrl, oJsonInput) 
{
  console.log("開始執行同步方法2!");
  
  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 oJson=await oResponse.json();
    console.log('2:',oJson.response); // 取得完整的回應內容
  }
  catch(oError) 
  {
    console.error("Error fetching Ollama response:", oError);
  }
}

</script>