概要

Azure OpenAI Assistants APIを用いたアプリをGradioとNext.jsで作成したので、備忘録です。

対象データ

Zennで公開している記事を対象にしました。まず以下により、一括ダウンロードしました。

ififpuwfmrmrarhopopogliromomeslrreurdaifputirshtowtbtt==rearfoarefeotxsisq1lsttrglxsumt.tr4od1[:pailetopplmhesm]=ocebaui_sco=afqin=lnrrr+no.on==ko.umifse(etl=ppnshepwepm"ersaaistaateBstdersopherkc.1qttieominitrot=s=tladhhn=aulr(tstrtpiepm.uup.stetprodcp(=eert.g(e(Bsenalieuxeifeoxtet:qstennrfiqfitstxaq/ueasdl"suun_._tud/e.[)a(sdteldtpo)tmzsj'r")assS(eapietsa=th:t(tocxtafnsor=itatsulthtun.ntct/e.pa(.hl.g(i0lptxg(s)d,Sde)c:esetersioetls:x_te_r"uv(e:/t(s=nwp/us/pup"a"ar'z{arozm)pl]eutlnnei)nrh)sc(a/nl)e"tsa..:.)erdstxftepet:ivlx_c"itolt,pe+(as'"t?a/hhur't)st)m,ei[lrc-.enl1pxae]aim[}rse'.st=pte_naxroatt"kkh")=a'Tm]ru)urea)196&page={page}"

ベクトルストアへの登録

以下のようなコードにより、データファイルをアップロードします。

ifffflc#ivivf#rifff##Bv#ff#ff#imrrrrolsefeoetioi#Ae#ii#io#fpooooaiaaa_ccrselrlTclllrommmmdezppctitpmeeCteeefr_nuiirosvoviosniffnHoss_ffi#f#iitetdogtdtr__er_erefnatiia_r.siif#i#flrxoplqoekva_cc_cs=mellmS_=stllleycoteodt=_eetsrtstveemeeeIsoreefel_:esenbmeeyreteotoevbrsnnsZtgrenic_etefscppnanAn=s_oarorcer=eiaa.Eoltaialosnrxitltrviiivzdoivrt_r_tces=nmmsro(mnment(ycnriimm(upsoeeesesotacpeeo=eb)sentrf:eaeeEniipporo.nc__tstroklo[isr_(taieicpplfanvxtmmooveig=tnvoo_rin]t=.t1i"=q=mnalltrlimtec(pprreOne"oaer=rs_esea(0d.deumeiiyls.cefoottrptt2rmceetsnemip)0/[moes_eEn:e:btp"rrree0_etcott.stp=d](si.snvxt_eotEttgtin=n2so=liro.d:eeaf.nattec(strirlqdAv4t=rinerfamn"tippr.cefta_orlAodeIo(-o_ce.eit.dvalafpebtp"r.snoozbm=(s"0r"slnvn_laf(s/etieaeotEevtrauT.A5eVtiteaieif_tshlnmtriraeoadrrgZ-eoe.cmdsliUe).edsa_ormcrsp_eueU0=crnbte.elEx:bn().snosterdOetR1teteo=lneLtaaovtro_eoop)eE-To:.tr=iann/smp=eoa=ri:cten_prrba_=vsmaI*eee=crsp_deenvOrue.setemB.nsnter[s=snA(PeeStvtvc(ekta:(Bo_eo]tvsvI"Evtaeoetp)cxmfAri:coeiANio.crcouRteiT_dercnZAervtetrrO"(#lCs=s#etgUIweeoso_pD)feHtvssoR_""cr:rso3i,_oei.rrEAt__tsolSrcnf_e_Possoe4e"IetgismOIrttr=X)rZsoltaP__ooe"KbE.rbeoiEKsrr.aX":f_a_rnNEteeis2)istbeiAYos_dsC)ltca_nI_r.niceohtig_Zelasp_r:cdEEsimtVbeh,fNN.seaja_{eiDNct:notiesflP"r(t"cd}.ieO)e)sh,"ulsI,a"e)pe:Nt)sflsTe.io={_(ulafeZnpedi}Eals_l"Nmo=ae)Neafn_"=dids)v_l_t,eaeprcn_oetdslao_tlmrpr(s_oeslatlmo(sre_name)#Createavectorstorecaled"FinancialStatements"

アシスタント プレイグラウンド

「アシスタント プレイグラウンド」を用いて、挙動を確認します。

少し気になった挙動として、同じファイルが複数回Citationされた場合、2つ目以降はコンテンツが空の形で表示されるようでした。

Gradio

Azure OpenAI Assistants APIとGradioを使ったアプリを試作しました。以下のSpacesからお試しいただけます。

https://huggingface.co/spaces/nakamura196/zenn

実装方法は以下をご確認ください。

https://huggingface.co/spaces/nakamura196/zenn/tree/main

GradioのChatbotとAzure OpenAI Assistants APIを組み合わせるにあたり、一部変則的な実装を行なっている点がありますが、参考になりましたら幸いです。

Next.js

同様に、openai-assistants-quickstartを使ったアプリも試作しました。以下でお試しいただけます。

https://openai-assistants-quickstart-zenn.vercel.app/examples/basic-chat

リポジトリは以下です。

https://github.com/nakamura196/openai-assistants-quickstart_zenn

openai-assistants-quickstartで、Azure OpenAI Serviceを使用するにあたり、openai.tsファイルを以下のように変更しました。

ie}mx)ppeada;oonpeprrdipittpKlVoeoe{ciyyron:msAnteizs:pnoutrtnrpo::eorcOpoe""pecsg2enesp0nas.t2Aise-4I.n4-=evo0}n."5nvO,-fe.P0rwOE1oPN-mAEApzNIr"uA_eorIAvpe_PieOEIenpN_waeDK"inPE,"AOY;II,(N{T,

課題

GradioとNext.jsのどちらにおいても、以下のエラーが発生して、Citationのファイルの内容を取得することができませんでした。

https://community.openai.com/t/can-not-download-assistant-generated-file-download-link-assistants-api-v2/1002926/1

この点については、引き続き調査したいと思います。

まとめ

Azure OpenAI Assistants APIの利用にあたり、参考になりましたら幸いです。