跳到主要內容

[野人獻曝] Yahoo! 斷章取義API範例程式碼(PHP版)

Yahoo! 斷章取義API測試程式碼

我的測試網站

這是今天看到 xdite 大大放出來的消息,
所以寫出來的程式碼。

如果不嫌棄的話,可以參考一下我的程式碼實作。
但是請注意,你一定要申請一個Yahoo!的API帳號,而且還要啟動它,
這樣程式才會正常運作喔!

Technorati 標籤: ,

留言

匿名表示…
你好 看了你的文章
想請問一下
我照著您的程式碼 複製過去
想試著執行看看
也有申請KEY 跟啟動
但是網頁都是一片白 沒東西...
是有什麼步驟沒有做到嗎

麻煩您教我了
謝謝
Faryne寫道…
你在網頁的最前端擺一個error_reporting(E_ALL)好了,看看有發生什麼錯好了......

如果還是看不到錯誤的話,再來繼續看看吧~
匿名表示…
oh ya~
終於出現畫面了
原來是我自己犯了一個非常蠢的錯

但是 現在又有個問題要請教
就是按下分析後
他顯示查詢中 經過5分鐘後 還在查
10分鐘過去 還在查...
我有辦法知道他是真的在查詢嗎
或是早已經停止?
因為我尚未有成功出現結果過...

總之 感謝再感謝...
Faryne寫道…
通常應該是不會花上五分鐘以上的時間啦,
可能是程式碼哪裡出問題了,這就要再觀察看看了(可能是再取網頁內容花太多時間、或者是送資料給Yahoo!分析花太久了,總之都很有可能啦)。

當然也不排除我當初寫的太爛,
有我沒意料的情形發生也不一定(汗)
匿名表示…
恩恩...
我另外想請問
為什麼每次進入我試做的網頁
他會變成亂碼 都要調整編碼後才OK
不知道錯誤跟這個有關係嗎
http://wirl.er-webs.com/yahoo.php
這是我照著您的程式碼試做的
請您看看 不知能否看出些端倪?
感恩
Faryne寫道…
你存檔時選錯編碼了啦~
我的程式碼是用UTF-8編碼的,
所以你在存檔時要用UTF-8而非ASCII(Big5)存檔才行!
whitefur表示…
你好
感謝你的分享
我把你的code複製貼上
我加入error_reporting(E_ALL)執行後
出現了以下兩則錯誤訊息
Notice: Undefined index: action in C:\AppServ\www\test\untitled.php on line 27

Notice: Undefined index: action in C:\AppServ\www\test\untitled.php on line 67

似乎是action的地方出問題了
請問是什麼原因呢?
感謝你
Faryne寫道…
@whitefur:

我剛剛試一下,應該是因為我當初寫的時候沒有判斷是否有$_GET['action']這個變數(默)

所以請你把第27行改成:「if (isset($_POST) && isset($_GET['action']) && strtolower($_GET['action']) == 'do_ajax') {」
和第67行改成「if (isset($_POST) && isset($_GET['action']) && strtolower($_GET['action']) == 'do_post') {」
這樣應該就沒問題了。
whitefur表示…
您好
我把您的CODE放到我的電腦上跑
但是按下「分析吧!」之後卻沒有反應
http://114.32.63.213/test/untitled.php

不知道是哪裡出了問題
是否是我跟YAHOO那邊的溝通有問題
還是我要改什麼設定
我是用APACHE
不好意思我這兩天才開始使用PHP
因為專題的需要老師要我們幾天內學會用php去call斷章取義api
麻煩您了
謝謝
Faryne寫道…
@whitefur:

我想你照貼以後,忘了最重要的一件事了:沒有申請Yahoo! AppIDXD 請照官方網站說明申請一個API KEY在貼到程式的指定位置

這個網誌中的熱門文章

[野人獻曝] 串接 OpenAI 的 Assistant

你就直接把 Assistant 當成你在 ChatGPT 看到的那些 GPT 玩具吧(?), 只是你可以透過 Assistant API 透過程式化來建立你的 GPT 並與你的網站功能結合。 雖然前面說了「用 Assistant API 」,但實際上其實需要以下三個類型的 API 相互結合才能生出一個 Assistant: Assistants API :設定給助手(?)的指示內容、要使用的模型等資訊。在絕大部分場合下,你通常只需要呼叫一次 Assistant 的 Create 方法一次,此後就可以把回傳的 id 記錄下來後用在其他地方。 Threads API : 建立對話串,這個對話串會與前述的 Assistant 相互結合,讓 Assistant 知道要在這個 Thread 開始監聽訊息,並針對指示做出相應的回覆。 Messages API :將使用者輸入的訊息送到 Thread Runs API :使用者送出訊息後,就要呼叫 Create Run ,讓後端知道有工作要做了 以下是其流程: 先呼叫 Assistant API 的 Create ,記得要拿到回傳中最重要的 id ,這會在接下來的步驟中使用到。如果沒什麼特殊狀況的話你可以把這個 id 持久化保存,之後就不用再重做一次這個步驟。 接著 建立一個新的 Thread ,並取回其中回傳的 id。這個步驟你可能會因應不同的使用的而需要頻繁產生。 以上兩個步驟完成後,接著就可以: 建立一條新的 Message ,並將使用者輸入的內容發送至剛才建立的 Thread 中(透過之前建立 Thread 成功所得到的 id) 接著 呼叫 Run API 的 Create ,將建立 Assistant 與 Thread 成功時所取得的 id 帶入後,就會開始根據使用者輸入的內容開始做分析處理。若是忘記呼叫這個 API 你會發現怎麼內容輸入了但卻沒有任何回應。 然後就可以定期去 呼叫取得 Run 資訊的 API ,看看是不是已經處理完畢。只有在 status 是 completed 時,才代表執行完畢。 執行完畢後,就可以 透過 Message API 取得訊息 。 看吧,很簡單吧? ㄍㄋㄋ,官網沒寫詳細用法只有提供 endpoint 資訊。害我先按照自己的想法寫出一個雛形發覺怎麼跑不起來一邊確認一邊問 ChatGPT...

[野人獻曝] 架個 Stable Diffusion WebUI 來生個香香的老婆圖

A.I. 當道後, 什麼以文生文、以文生圖、以文生聲(?)等玩意陸續蹦出來。 別的先不說, 光是以文生圖就有像是 MidJourney 還是 Dall-E 等模型提供相關服務。 而後 NovelAI 自爆自己的以文生圖模型是透過 Danbooru 上收集的圖片所訓練, 外加相關程式碼也不小心外洩後, 你各位紳士們就開始在以文生圖這塊領域中尋找自己的婆了。 不過以上都不是重點, 本文只是想要記錄下 Stable Diffusion WebUI (以下簡稱 SDWebUI)的架設步驟而已。 其實安裝步驟出乎意料的簡單(當然是指在 Google CoLab 上), 只要以下幾個步驟,基本上就能把 SDWebUI 跑起來並且開始生圖: * 確保機器上有 Python 3 以上環境 * 下載 SDWebUI 原始碼,可以直接在 Github 上 clone 下來。 * 下載所需的模型:在產生 ACG 相關圖片的話,目前推薦使用 Anything 或是 Hentai Diffusion 等模型。不過要注意一點:模型檔案越大的話,硬體要求會更高(主要是顯卡的 GPU 和記憶體等級)。如果沒滿足需求的話可能會跑不起來 * 切換到 SDWebUI 目錄,執行以下指令開始跑 SDWebUI 的設定,會在這個步驟安裝其相依的 Python 套件並處理相關設定: COMMANDLINE_ARGS="--exit" REQS_FILE="requirements.txt" python launch.py *  把前面步驟所下載的模型檔案,搬移到 SDWebUI檔案目錄/models,例如 clone 到 /home/user/stable-diffusion-webui 的話,就把模型檔複製到 /home/user/stable-diffusion-webui/models 下。 * 執行以下指令,等待跑完以後,畫面應該會顯示一組 xxx.gradio.xxx 的網址,可以讓自己或朋友連進來玩(網址 72 小時內有效)。如果只是自用的話,也可以用 localhost 的網址開啟服務: COMMANDLINE_ARGS="--share --gradio-debug" REQS_FILE="requirements....

[野人獻曝] Google App Engine ...... 的踩雷

最近因為要把用 Go 寫的一些 API 搬到專用平台跑又不想花錢, 想到 App Engine 有免費方案, 所以看了一下就先搬一兩隻進去跑了一個禮拜後, 昨天好奇瞄了一下帳單後大吃一斤, 發現才跑一個星期就有 16 鎂的帳單! 再仔細翻一下文件發現這其中的奧秘...... App Engine 分成兩種運作環境, 一為標準,另一個則為彈性。 前者有提供免費方案,依照選擇的類型不同,可能會有一天 28 或 9 個的免費時數可用; 後者完全沒有免費方案,一開下去就立刻算錢。 而我用的正是彈性,所以一開下去就馬上燒錢 Orz 話說回來了,到底標準和彈性環境有什麼差別? 標準環境的特色: 使用的程式語言版本基本按照 App Engine 要求。以 Go 為例,他該死的就只支援到 1.16 ,想用 1.17 以上的版本,你只能使用彈性環境。 有免費方案(不是重點 運作系統規格只有籠統的 F1 / B1 這種讓你選,就算想要記憶體多一點你也只能選更高的等級。 AutoScaling 只能設定標準由 App Engine 自行控制 想在運作環境裝一些額外的東西嘛......應該是不行。 彈性環境的特色: 可以自己寫 Dockerfile ,所以要什麼東西用什麼語言環境,你自己決定 沒有免費方案(依然不是重點 運作所需的 CPU 核心和記憶體數量可以自訂,只要符合基本要求即可 AutoScaling 機制可以手動也可以自動控制 可以 SSH 登入,想查什麼東西還蠻方便的說 所以你知道為什麼彈性環境沒有免費方案了吧(眼神死 ====================== 不過根據使用和昨天翻文件下來, 我覺得 App Engine 彈性環境遠比 AWS 的 ECS Fargate 更懶人包。 前者只需要專注在程式撰寫和設定所需運作的環境,基本上沒什麼事要做了; 但後者除了上述的東西外, 還需要自己設定從 VPC / Security Group / Load Balancer 等一狗票東西, 老實說還挺麻煩的。 ====================== 不過地雷還是有, 在寫 App Engine 的 app.yaml (運作環境設定檔)時, 關於 auto_scaling 的相關設定必須要特別注意, 如果沒特別宣告的話, 會讓你的服務可能一開始就開出兩個 instance 運作...