OpenAIのAPIをC# Unityでやるためのスニペット


4月になったのでGithub copilotとchatGPTに課金してみた。chatGPTのAPIがあるというのでチラ見。リファレンスみてたら platform.openai.com/docs/libraries に Unityがあるので入れてみたりしたのだが、入力にInputを使っていたり嫌な予感。2年まえのだった。APIもリファレンスとずれてて通らない。なんとなく昔はmodelsとかcompletionsがなかったのかな?json組むところを追ってたんだけど250ぐらいファイルがあってしかもパッケージなので嫌になった。素体にしているjsonをちょいと書き換えるぐらいのもんだとおもったんだよ。というかちょいと動かしてみたかっただけなんだ。使う予定もない。ローカルにnode.jsとかpythonとかを動かせる環境をつくる気力と能力がない。いま動くのはunityとそれにつかってるC#ぐらい。

というわけで、curlコマンドで書かれてる内容をhttpClientで投げてけるやり方で動かしてみた。公式のライブラリから紹介されていたひとは UnityEngine.Networking; つかってたけど、使い方がよくわからないのでSystemのHttpにしてしまった。ベタがきで蹴ってるだけなのでよしなに書き換えて自分で実装してみてください。まあほんとにほんとのご参考までに。他のかたの15分ぐらいの労力節約のためにネットの海に放流しておく。技術ブログとかもってないんだ・・・。


using System;   // Uri
using System.Text;   // Ascii
using System.Net.Http;
using System.Net.Http.Headers;    //AuthenticationHeaderValue 
using UnityEngine;

public class UnitCurl : MonoBehaviour
{
    private static async void postOpenAIAPI()
    {
        using HttpClient client = new HttpClient();
        string uri = "https://api.openai.com/v1/chat/completions";
        var request = new HttpRequestMessage(HttpMethod.Post, uri);
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "ひみつかぎ");
        client.DefaultRequestHeaders.Add("User-Agent", $"testKui/openai_api_fromunity");
        client.DefaultRequestHeaders.Add("OpenAI-Organization", $"あれば、そしきID");

        string json = "{" 
            + "\"model\": \"gpt-3.5-turbo\","
            // + "\"messages\": [{\"role\": \"user\", \"content\": \"Say this is a test!\"}],"
            + "\"messages\": [{\"role\": \"assistant\", \"content\": \"hello!\"}],"
            + "\"temperature\": 0.7"
            + "}";
        HttpContent content = new StringContent(json, Encoding.UTF8, "application/json");
        var httpsResponse = await client.PostAsync(uri, content);
        var responseContent = await httpsResponse.Content.ReadAsStringAsync();

        Console.WriteLine($"{responseContent}");
        Debug.Log(responseContent);
    }

    void Awake()
    {
        postOpenAIAPI();

    }
}

最近は、UnityとPlateauで簡単なタワーディフェンスゲームをつくろうとおもっている。chatGPTを使う予定はないのだけど、流行りに流された。流行りに流されると苦労するな?


AI vs. 空気をよまない大人たち(2)



前回の投稿から4ヶ月ほど下書きのまま保存されているのをみつけた・・・。そうだこの続きも書こうと思ったままになっていた。

 

教科書が読めない子供たち

前回の投稿の続編。

 

 

AI vs. 教科書が読めない子どもたち 新井 紀子著

 

曰く、教科書を読んでも文意を汲み取ることができない、教科書を読めない子どもたちがかなりいるそうな。なんとその数、約3割。おもえば中学2年の頃、数学の教科書に書かれた「任意」の使い方に納得できず、学校から教科書会社に電話してしまった口なのだが、たぶんそういうガチ中二病が3割とかそういうことではないようだ。

 

それまで誰も疑問をもっていなかった「誰もが教科書の記述は理解できるはず」という前提に疑問を持ったのです P185

・・・えっと、教科書を読んで素直に頭にはいってしまうエリートさんも問題だとは思うのだが、読んでも意味を汲み取れない人がいることに気がついていなかったということには新鮮な驚きを覚えた。

 

下手の考えサイコロのほうがまし説

AIには「同義文判定」「推論」「イメージ同定」「具体例同定」がまだ難しいそうだ。

そこで人間について調べたのだそうだが、一部のひとについてはいっそ考えないで答えてもらったほうがましという答えが出てしまった。

図3-8 P214

回答選択肢を適当に選んだときよりも、低いスコアを出す受験者数の割合。学年別ランダム率を示した図。

推論や同義文判定など考慮せずに選択肢を選んだほうが得点が高くなる分野がある。逆に、係り受け、照応のランダム率は低く、ディスクレシアなどのなんらかの障害があることが考えられるとのこと。

 

推論や同義文判定ができなければ、大量のドリルと丸暗記以外、勉強する術がありません。(略)「一を聞いて十を知る」ために必要な最も基盤となる能力が推論なのです。 P215

 

 

問題文が読めない

一般にテストは信頼性、妥当性、客観性が求められる。

同じ人が同じような問題でなら何回でも同じ点数が取れるかどうかという信頼性と、用いる評価方法が測定対象となる能力や行動を測定できているかの妥当性、採点者が変わっても結果が同じかどうかの客観性が必要だ。

表3-10 P220


高校の偏差値と読解能力値の平均値と相関係数

ランダム化率の高い推論やイメージ同定での相関係数の高さが注目すべき点。

 

この相関係数の高さから、同じような能力値のひとが同じような結果を返すテストの信頼性はとかく高そうだ。もしかしたら、学校の入学試験などというのは「数学の能力」などよりも、設問を読めるかという読解能力値に評価妥当性があるのかもしれない。

 

図3-1

偶数奇数問題の証明の問題正答率である。典型的な誤答が国立S級以外の大学生に異様に多く、逆に言うと、国立S級の大学の子は、この手の問題に適応化、最適化されている子があつめられているとも言える。

 

能力値別に誤読させてフィルタできる、綺麗なトラップが作れるようだ。

この綺麗なひっかかりを見ていると、錯視に近い文章読解について脳の認知機能があるような気もする。

聞いたこと無い単語をまぜてスポット的に認知を歪め意識を逸らさせたり、修飾語を離して読者をミスリードさせる方法とか、そういうバッドノウハウが文章問題作成という分野で蓄積された結果なのではないか。

 

幼児期における発達で、自己と他者は異なるという比較認知やメタ認知力の成長がある。回答者の能力に差があるとすれば出題者の設問意図の斟酌。つまるところ忖度力の差なのかもしれない。

ということは、強いAIが生まれるかどうかは、AIが己と他を認識できるようになり、忖度できるようにならないといけないということだ。

原生生物から進化するために、自己と非自己の認識が必要であったが、AIも進化のためには自己の範囲を認識できるようになる必要がある。

 

 

教育環境と遺伝

近代工業化以降は、マニュアルに定めたとおりのオペレーションができるひとを社会に供給するために機能し、評価してきた。日本の教育はそのような点で効果的であったと理解している。

就学補助率と能力値との強い負の相関です。
//
就学補助率が高い学校ほど読解能力値の平均が低いことがわかった
//
貧困は読解能力値にマイナスの影響を与えています。
P227

ここには極めてセンシティブな問題がある。

親の文化資本にアクセスできないからという、環境要因と、そもそも遺伝的に発言しない形質としての認知能力、生物学的要因だ。

「中高生は教科書を読めているか」という事実を考えようとも、調べようとしなかったのでしょうか
//
ビックデータに基づくサイエンスを教育に適用したのです
P239

経験上わかっていても、解決策がなければ蓋をして見なかったことにするのは日本の事なかれ主義では王道だ。サイエンスが教育に適用されたとき、もしかしたらそこに待っているのは現在の社会では差別とされるような区別かもしれない。

遺伝的に長距離走に向いていない筋肉を持つひとや、短距離走に向いていない筋肉を持つ人がいるが、遺伝的配向でそもそも学ぶことができるアクセスを制限されてしまう可能性がある。

エビデンスベースドラーニングは、教育を高効率なものにするかもしれない。しかし、他方でいままで勉強が足りないものとしていた建前も崩してしまうかもしれない。

 

ITやAIでは代替不能な人材、意味がわかり、フレームに囚われない柔軟性があり、自ら考えて価値を生み出せるような人材
P258

AIに絶対に代替できない仕事の多くは、女性が担っている仕事です。子育ては汎用AIが登場したとしても、最後まで人間がすべき高度知的労働として残ります。
//
男性社会は女性が担っているというだけの理由で、介護や育児やアノテーション設計のような知的な仕事の担い手に対して、十分な地位と対価を支払っていません。
P259

ここでの対価が貨幣経済的なものであるのであれば、それはそのとおりなのかもしれない。東京医科歯科大学の入学試験でのハンデキャップのようにアンフェアな競争下にあるのも事実だ。

しかし、他方でその男性社会が形成するような評価生態系の中にはいりこまず、女性による評価社会があるのも事実。母親としての地位はお金や組織の肩書で交換可能なものではない。代替不能なものである。
AIに代替されないものというのは、そのような代替の脅威にさらされない役割なのだとおもう。

 

貧困と遺伝子

教育と親世代の年収に強い相関があり、教育格差「やむをえない」が6割を超えるそうだ。

教育格差「当然」「やむをえない」6割超 保護者に調査
www.asahi.com/articles/ASL3S5VPYL3SUTIL014.html

交通事故と学歴に相関があることを保険会社がみつけて、保険の掛け金を変更するという現実は半分来ている。統計上の相関は破産や事故に結び付けられて考えられ、保険のような事前に結果の担保をするような仕組みにも影響を与えることだろう。

 

AIは人間と同じ感覚器を持ちうるや

人間が社会生活のなかで獲得している明文化されることのない暗黙知。これを理解と呼ぶのであれば、その獲得に必要なのは、人間と同じような社会生活である。

つまり、感覚器を有して人間と同じ生活を送ることでしか外部環境、外部情報はセンシングできないので、もし、演算能力や記憶容量が増えたとしても、そこからは人間のようなAIは生まれない。

暗黙知を教師データとして与えるにはデータ化が必要。ディープラーニング以前は、人間による職人的なチューニングが必要で、その過程でどうしても情報密度が落ちる。センシングの部分で人間の生体センサー並みの感覚器を、人間と同じようなタイムラインで保有してストックできるようになれば、AIの暗黙知と人間の暗黙知が揃うことがあるかもしれない。

だが、現段階では計算機はそのような感覚器を持っていないので無理である。味覚センサーも、臭気センサーも、半導体が解決するより先に、生体組織で解決されるかもしれない。視覚器、聴覚器については人間のそれを超える性能が実装されてきている。映像解析や音声解析からAI化が進むのも自然な流れだろう。

 

個体差としての認知能力

コンテキストが認識ができず、ただひたすら暗記するよりなかったとしたら?

中学生ぐらいで100走でいえば12秒代で、水泳でいえば100メートル自由形で70秒切れるやつとかがいる。走れる人間なら、トレーニングを詰めば10秒代に乗るかもしれないし、60秒も切れるようになるかもしれない。でも9秒を切ることはないだろう。

言語、共感性や、運動能力で人間の能力というのは正規分布に広がる。賢さも同じようなレベルの生体機能でしかない。

生体には限界や加齢もある。
人工頭蓋変形で知能をあげるというような、文化風習があった歴史もあるが、遺伝子操作でもしないかぎりは、人間は生物学的なホモ・サピエンスのくびきの中にいる。しかし、AIは生物学的な制限を受けない。

足の速さの価値が車の経済的価値におきかわったように、同じように代替されるものだとおもう。

AIと人類の比較は、お米とガソリンの比較に似ている。
同じジャポニカ種の、ササニシキとかコシヒカリとか、同じ料理法、似たような風味であるから比較ができるのであって、まったく異なるものとの比較品評に意味があるのかと似たようなものだ。カロリーベースで比較して意味があるか?

思考は外部デバイスにまかせてしまえばよいやという時代がきたら、どれだけ早く入眠できかとか、視力のよさとか、皮膚の感度のよさや、味覚や嗅覚などの外部と接しうる器官の生体性能のような、現代ではおおよそ賢さとは関係ないものが賢さという意味にかわる時代がくるかもしれない。つまりのび太くんこそがAIに代替されない優秀さを持つことになる。

 


AI vs. 空気をよまない大人たち(1)



曰く、シンギュラリティはおきないそうである。

AI vs. 教科書が読めない子どもたち 著:新井 紀子国立情報学研究所教授の本を読んだ。奥付を読むと、2018/2/15発行で2018/3/27でなんと既に6刷りである。


私はこの本の印税は1円も受け取らないことを決めました。// 「教育のための科学研究所」に全額が寄付されます P.286

あとがきにこう書いてあってすごいなと思ったんだけど、印税を寄付扱いだと、税がエライコッチャになるんじゃないのとか、一般社団法人の代表理事だから職務著作になるのか?じゃあ寄付がわりの贈与とかできちゃうなとか、いらんことが気になった。

 

はてさて、本論にもどる。

AIは意味を解さないからシンギュラリティはおきないそうだ。だが、自分はこの本を読んでもそれでもシンギュラリティっておきるんじゃないという結論になってしまった。きっと、なにかを読めていないのだろう。

 

シンギュラリティアレルギー

マーケティング用語としてのAIやシンギュラリティに辟易して、アレルギーをおこす気持ちはわかる。最近ほんとひどい。AIの専門家として矢面に立たされ続ければ、シンギュラリティなどおきないと強弁したくもなるだろう。

 

「真の意味でのAI」の定義を自分自身よりも少しでも能力の高い「真の意味でのAI」をつくりだせることとし、その、厳密な意味での「技術的特異点」はこないと断言できるほどに、予断を持った未来しか見れなくなっているのは荒みすぎていると感じる。可哀想だ。数学では表せないからできないからという。では、世界は数学でできているという言葉はなんだったのか。

 

数学で定義できず、統計的手法しか「ものさし」がないので意味を理解できない。だから計算機が知性を獲得することはありえない。その上で、計算機でしかない機械が「真の意味でのAI」なることはない。まぁ、わかる。

だが、それでも、ある人工の知性体が自己より「能力の高い」複製体を作る未来は、そう遠くもないよね。
理由は後述する。

 

知性と計算機

AIは計算機ですから、数式、つまり数学の言葉に置き換えることのできないことは計算できません。では、私たちの知能の営みは、すべて理論と確率、統計に置き換えることができるのでしょうか。残念ですが、そうはならないでしょう。 P.118

はたして、AIが未来においても計算機上にあるという仮説は正しいのだろうか?

 

人間には知性があると仮定する。

現在までのところ人間が人間を工業的に生産することはできない。

しかし、倫理にさえ目をつむれば技術的、論理的には人工子宮や、3Dプリンターなどをつかって細胞の積層化技術など三次元組織体構築ができるようになったことなどをみてもわかるように、ある程度のところはできるようになってきていて、人間や、人間の脳機能のみを将来部品として再現することはそう遠くない未来にくるだろうことが予想される。

小脳をPEZYのスパコンで再現できたよみたいなシミュレートの話ではなく、生化学のほうね。ちょい前のSFよりも奇妙な段階に到達していて、ネズミの脳みそのなかに霊長類のタンパク質を再現したり、豚の中で人間の臓器をつくることもできるようになっているのを踏まえると、創作の世界だって、遠慮しちゃうような奇妙な現実に我々は生きている。

工業的に生産された人造人間は計算機なのであろうか?

これはおそらく否である。

人造人間は自分よりも賢い人造人間をつくることはできないだろうか?

これもおそらく否である。

では、人造人間には知性は宿り得ないと言えるのだろうか?

人間に知性があるとするのであれば、これも否定しきることも難しいんじゃないかな。

 

AIはノイマン型コンピューターで可動するものである前提は果たして必要なのだろうか?

量子コンピュータが登場し演算能力があがったところで知性の獲得にはなんの役立にもたたないと著者は考えるようである。しかし、有機化学合成や、無機、流体や粉体、遺伝子解析や、創薬なんかは、まさに組み合わせ爆発の世界で戦っていて、いままでえっちらと失敗を重ねることで、現時点でもっとも成功にちかいようなものをとりあえずの正解としてお金を時間と運に突っ込んできた世界である。演算能力の向上は、その繰り返しの速度を圧倒的にあげてくれることだろう。

 

のこぎりの性能向上について未来予測をしたところで、家が建つ予想にはなろうはずもない。のこぎりはあくまで、家を建てるための道具である。計算機も同様にただの道具にすぎない。

 

計算機は「真の意味でのAI」にはならないだろうが、AIをつくるのには十二分に役に立つ。

「真の意味でのAI」という目的達成のために「計算機」という道具に縛られすぎてはいないだろうか。無論、上記にあげたような人造人間もあくまで反例のひとつで、そのようなアプローチではないかもしれない。技術は複合かつ有機的に発展していくもので、ひとつの道具をとらまえてその道具の性能から未来に予断をもってしまうのは、ちと科学者としては寂しい。白いカラスは一匹いれば十分だ。

 

だって、人間は仕組みを完全に理解するより前に飛行機を飛ばしてしまう生き物なんでしょ。

 

 

2007年のアニメ、天元突破グレンラガンのメインシステムは敵大将の生首を生体部品として採用していて笑った。これを見ながらこのエントリーを書いたからこんな話しになった可能性は否定しきれない。10倍返しだ!

 

創作に意味の理解は必要か

直木賞を受賞するような小説を書いたり
新境地を開く楽曲を作曲したり
ピカソばりの傑作を描いたりする
意味を理解できないAIにそのようなことができるはずがない P.130

昨今の人工ダイヤモンドはいよいよもって鑑定士でも天然と人工物の区別がつかなくなってきたそうだ。

もし、何かに特化した「弱いAI」が、確率的に創作したものであっても、アウトプットを受け取る側の人間がその区別をつけられなくなったら、ではいったい本物と偽物の違いとはなんであろうか。出処や来歴?

訓練された人でも区別ができない精巧な偽物と本物の本質的違いとはなんであろうか。

マルセル・デュシャンの「泉」っちゅう便器をおいただけの前衛アートを見て、「○○は意味を理解できない」との作文に、○○にはいるのは、AIだろうかヒトだろうか、作者だろうか観客だろうか。正解は一意に決まるのだろうか。

もしかしたら、創作はオリジナルと、そのイミテーションのイテレーションなのかもしれないが、そんなことはオリジナルがつくれる側の人間がAIを書けるのだから、強いAIである必要すらないのではないか。

ここは弱いAIでもやがて到達できる領域なのではなかろうか。

うん。この項はまだ表現が難しい。まとめきれない。

 

AIは徹頭徹尾数学だけ?

「花子は太郎に好かれている」// その通りの意味を教える道具は少なくとも数学にはありません。// コンピューター上で動くソフトウエアに過ぎないAIは徹頭徹尾数学だけでできているのです P.138

計算機は意味を理解できないというが、ソフトウエアを記述するプログラムは意味を定義したり、動作を記述するための言語で、数学にはない時間変化に応答する方法も持ちあわせている。

 

一般的にBOTなAIをつくろうとしたら、

  • 外部環境などをスキャンする(センシング)
  • 取得できた情報に重み付けする(アルゴリズム)
  • 行動する(アクション、これがアクチュエータ/動作機構になればロボットになる)

簡単に言うと、これの繰り返しである。時間応答のなかで、外部環境の変化に応じて、振る舞いをアルゴリズムに従って変える。

この場合であれば「太郎」「花子」のオブジェクトを定義してあげて、太郎オブジェクトの花子への評価値に「好き」っていう状態を書き加えてあげればよい。

太郎.likes{花子}みたいに配列にぶっこんでいく書き方でもいいし、表現方法は山ほどある。

プログラム作成者ごとに、定義が違ったり、好きクラスを実装するのかとか、そのクラスが何を意味するのか、その後の動作もことなるので文面どおりの「その通りの意味」にはならないかもしれない。

でも、コンパイル(翻訳)も実行も必要ないなら、テキストをそのまま生で保持すればいいだけじゃ??ちゅうか・・・文面通りの意味ってなんだろう?

 

 

すこし横道にそれる。

かねてから思っているのだが、法律などは自然言語ではなく、なぜ論理型言語で書かないのだろうか。

霞が関言語、官僚言葉は比較的そのようになっているらしいが、コーディング規約のない、コード(法律)なんてクソコードだとおもう。不文律に従って成文化するなんてファンキーすぎやしないか。

コードがしっかりしていれば、裁判官や学者ごとのコンパイラによって解釈がわかれたりすることもないだろう。法律の継承関係や、定義がはっきりするから、附則ばかりの法律運用やめてリファクタリングもできる。

循環参照や日本の悪名高いダブルバインドされてて何もできないとかも、テストが書けて、顕在化できるしいいことづくめじゃないか。

法律が論理記述されれていれば、交通事故などぐらいであれば状況データや写真などを数枚食わせるだけでAIが裁判官をすることもできるようになるだろう。 そうなったときに、AIができないでことは、情状酌量の余地があるのかとか昨今はやりの感情を斟酌したり、忖度である。

 

制度なんてものは、数学のようにデジタルに定義できるようにつくっておいて、伸長が必要な情緒の部分は人間がやればいいのにと思う。

「AIってのは駄目だね、粋や酔狂もわからねぇ唐変木だ。」

ここからでいいんじゃないか。20年も経てば「あいつもだんだんわかってきたじゃねぇか」ってなるんじゃないの。だって、準備された教師データ群の比ではない量のデータが世界にはあって、フィールドにこそ神は宿るんだから。

 

 

他、リンクとか

・・・。長くなってるので、そろそろエントリーをわけようかな。

 

他、リンク。

一般社団法人 教育のための科学研究所
www.s4e.jp/

 

遺伝子操作によりマウスの脳を霊長類のように変異させることに成功
sign.jp/be8760e0