Azure OpenAI Assistants APIを用いたアプリをGradioとNext.jsで作成する

概要 Azure OpenAI Assistants APIを用いたアプリをGradioとNext.jsで作成したので、備忘録です。 対象データ Zennで公開している記事を対象にしました。まず以下により、一括ダウンロードしました。 i f i f p u w f m r m r a r h o p o p o g l i r o m o m e s l r r e u r d a i f p u t i r s h t o w t b t t = = r e a r f o a r e f e o t x s i s q 1 l s t t r g l x s u m t . t r 4 o d 1 [ : p a i l e t o p p l m h e s m ] = o c e b a u i _ s c o = a f q i n = l n r r r + n o . o n = = k o . u m i f s e ( e t l = p p n s h e p w e p m " e r s a a i s t a a t e B s t d e r s o p h e r k c . 1 q t t i e o m i n i t r o t = s = t l a d h h n = a u l r ( t s t r t p i e p m . u u p . s t e t p r o d c p ( = e e r t . g ( e ( B s e n a l i e u x e i f e o x t e t : q s t e n n r f i q f i t s t x a q / u e a s d l " s u u n _ . _ t u d / e . [ ) a ( s d t e l d t p o ) t m z s j ' r " ) a s s S ( e a p i e t s a = t h : t ( t o c x t a f n s o r = i t a t s u l t h t u n . n t c t / e . p a ( . h l . g ( i 0 l p t x g ( s ) d , S d e ) c : e s e t e r s i o e t l s : x _ t e _ r " u v ( e : / t ( s = n w p / u s / p u p " a " a r ' z { a r o z m ) p l ] e u t l n n e i ) n r h ) s c ( a / n l ) e " t s a . . : . ) e r d s t x f t e p e t : i v l x _ c " i t o l t , p e + ( a s ' " t ? a / h h u r ' t ) s t ) m , e i [ l r c - . e n l 1 p x a e ] a i m [ } r s e ' . s t = p t e _ n a x r o a t t " k k h " ) = a ' T m ] r u ) u r e a ) 1 9 6 & p a g e = { p a g e } " ベクトルストアへの登録 以下のようなコードにより、データファイルをアップロードします。 ...

2025年1月6日 · 12 分 · Nakamura

Azure OpenAIとLlamaIndexとGradioを用いたRAG型チャットの作成

概要 Azure OpenAIとLlamaIndexとGradioを用いたRAG型チャットの作成を試みたので、備忘録です。 Azure OpenAI Azure OpenAIを作成します。 その後、「エンドポイント:エンドポイントを表示するには、ここをクリックします」をクリックして、エンドポイントとキーを控えておきます。 その後、Azure OpenAI Serviceに移動します。 「モデルカタログ」に移動して、「gpt-4o」と「text-embedding-3-small」をデプロイします。 結果、以下のように表示されます。 テキストのダウンロード 今回は、青空文庫で公開されている源氏物語を対象とします。 https://www.aozora.gr.jp/index_pages/person52.html 以下により、一括ダウンロードします。 i f i u r s f m r m r e e o p o p l s l r o m o p e r r = o c s m f t b t n t e e o s " s i l m r r 4 o h e o e b e s t n c e m a f f q i t = s t r e o o o u m p i s m z r r e p s r = o b o s o : e n = e r m i a f o i r r s d t o w t r / q r r a e f o i p f e e o i x s i s t / u e i s _ t z l a s s u v t . t g e s n e i u a m o e t o p p p m h B e s p l n r d e a r n h s c # o o = = a f e n t o s e l a t o a a . o n n = k o . a j s n e c m s t a z _ m = p n p s s s d e p w u i . s l t e a d o u e a t a e e B o i d e r t . g e e i m = a r r f t i s . e u v i n i i d e [ c o b i t a l = " h n s = e a p . r ( t f l t " t n e [ n a _ d . u n u . g s o e u . ( s i [ r ] [ u i a a e e r c t f e ( p ( l i u e o " s m " r n o t x e o i i t o a t S t r l n m : e l l z a i q d f n _ s t x o c l e s e m a s a o / s u i u d t . h t u . ) c : m b b o r t t e n l ( e p , ) p u . t b e e = z a e s s g S " x a - j i e r l o _ x ( t o d t t " t s o r [ " m r u t o s = u i ( h w o o n s " ] e a r / p . p v ) . " k n s " m t _ l { a g r ( " . d ) y ( " ] e = a u . f t e e r , s i o ) ] t = d r s i h t s e t r a . a a l p l ) ( p s c r n s a d " t s l e : a o p l i a c a a a : i n o n o a p m f . t o [ t a z s n s ( e : j a z " ( m o e s s ) ( p " o v " e r . e _ o / ] r a / } a a . = p d : a l " . _ p t " a a " u ) t u p e m t t : e [ x r a x a h a " - t l r t i ) / ] 1 " ) e , n , i . ] n _ n s . t " t e f p s _ h e x o l p e t x i . i l n m t s j t i c l " t s ( t o . ) _ o " ( d p o n , " i a k " . n r = " " g s T ) ) e r [ r u 0 " e ] ) ) Indexの作成 環境変数を用意します。 ...

2024年12月16日 · 15 分 · Nakamura

OpenAIでストレージ内のすべてのファイルを削除する

概要 OpenAIでストレージ内のすべてのファイルを削除する方法に関する備忘録です。 以下のページが参考になりました。 https://community.openai.com/t/deleting-everything-in-storage/664945 背景 以下のようなコードによってアップロードした複数ファイルを一括削除したいケースがありました。 f f # # f # p p i i i r r l l U a l v Y i i e e s n e e o n n _ _ e d _ c u t t p s b t ( ( a t t p a o c f f t r h o t r a i i h e e l c _ n l l s a l h s e e m u t p _ _ = s p t = o r b b l h r i a a g = o e c e n t t l a l _ t c c o [ d s i i h h b o t e d t . . ( p a a n = h s f " e n t t v e t i d n d u . e a l a ( s b c s t e t p p e t t u _ a a o o t o a s c / t l f a r t ) o t h l . _ u u x , t v s s n t S h e t t / " D e c o a s * r K t r n ) . b f o e d t " h i r . x ) e l _ i t t l e s d h " f p t , e ) o e b o r r a r f f t e i i p t c s l l a o h . e e t f s h u f i = c p o l f o i l r e i u n o _ l n a c b e t f d o a _ s i m t s l t p c t o e h l h r f _ e e e e p t s a t a f i . m h t i o u s e h l n p s e . l b ] s o a , a t d c a _ h d a d n t d o t _ h p s e o e m l e l t ( t o h e t h r e e s v u e l c t t o o r f s t t h o i r s e , o p e r a t i o n . 方法 以下のコードを実行することに、一括削除を行うことができました。 ...

2024年7月24日 · 13 分 · Nakamura

音声資料に関するIIIFマニフェストファイルに画像を追加する

概要 以下のAudio Presentation with Accompanying Imageを試した結果の備忘録です。 https://iiif.io/api/cookbook/recipe/0014-accompanyingcanvas/ 以下はCloverで表示した例ですが、設定した画像がプレイヤーに表示されます。 https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json マニフェストファイルの記述 以下に例を格納しています。 https://github.com/nakamura196/ramp_data/blob/main/docs/demo/3571280/manifest.json 具体的には、以下のように、CanvasにaccompanyingCanvasを追加する必要がありました。 { " " " " } i t d a , d y u c " " " " " ] " p r c i t h w i : e a o d y e i t { } " t m " p i d e " : i p : e g t m " " " ] h o a " h h s i t i t " n n " : t " " d y t { } t C " y h " : : " p e p a : i t " : : e m " " " " } " s n n t C 1 [ " s i t m b , t : 1 g p a 1 0 " : " d y o o " " " " " a / a 5 C s n 0 2 h : " p t d i t h w f r / s 6 a : 2 4 t " : e i y d y e i o g n " . n / a 4 , t A [ " v " " p i d r e a , 0 / s , p n " : a : : e g t m t k 7 a n " s n h t " h h a " a 9 s a , : t " i { " : t " t : m 9 " k t t A o h " : " u 9 : a / a p n n t " : : " r 9 m n t s n " t I 1 h a 9 { u a i : : p m 1 0 " t 1 9 r k o t s a 0 2 i t 9 9 a a n / a " : g 2 4 m p 6 9 1 m P n t p / e 4 , a s . 9 9 u a a i a / " , g : g 9 6 r g k o i n , e / i 9 . a e a n n a / / t 8 g 1 " m " t k j n h , i 9 , u , i a p a u t 6 r n m e k b h . a g u g a . u g 1 " r " m i b i 9 , a u o . t 6 1 r / i h . 9 a r o u g 6 1 a / b i . 9 m r . t g 6 p a i h i . _ m o u t g d p / b h i a _ r . u t t d a i b h a a m o . u / t p / i b d a _ r o . e / d a / i m d a m r o o e t p a / / m a _ m r 3 o / d p a 5 / d a _ m 7 3 e t d p 1 5 m a a _ 2 7 o / t d 8 1 / d a a 0 2 3 e / t / 8 5 m d a c 0 7 o e / a / 1 / m d n c 2 3 o e v a 8 5 / m a n 0 7 3 o s v / 1 5 / " a c 2 7 3 , s a 8 1 5 / n 0 2 7 a v / 8 1 c a c 0 2 c s a / 8 o / n 3 0 m a v 5 / p c a 7 c a c s 1 a n o / 2 n y m a 8 v i p c 0 a n a c _ s g n o s / " y m u a , i p m c n a m c g n a o / y r m a i y p n n _ a n g i n o / m y t a a i a n g n t n e g i o . / o t j a n a p n / t g n p i " o a o , t g n a e / t " i i , m o a n g / e p " a , g e " わかりにくいですが、iiif_prezi3を使った記述例です。create_accompanying_canvas()によってaccompanyingCanvasを作成し、それをcanvasに関連づけています。 ...

2024年7月12日 · 11 分 · Nakamura

IIIF Audio/Visual: 複数のvttファイルを記述する

概要 IIIFを用いたAudio/Visual資料の記述について、複数のvttファイルを記述する方法に関する備忘録です。 ここでは、以下のように、日英の文字起こしテキストを記述します。 https://ramp.avalonmediasystem.org/?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json マニフェストファイルの記述 以下に例を格納しています。 https://github.com/nakamura196/ramp_data/blob/main/docs/demo/3571280/manifest.json 以下の記事も参考にしてください。 具体的には、以下のように複数のアノテーションとして記述することで、rampビューアによって正しく処理されました。 " a n n o t a ] t i { } o n " " " ] s i t i " d y t { } { } : " p e , : e m " " " } " " } " " " " } " " } " [ " s i t l , m b , t i t l , m b , t " : " d y a " ] o o " " " " } a d y a " ] o o " " " " } a h : " p b j t d i t f l r " p b j t d i t f l r t " : e e a " i y d y o a " ] g : e e a " i y d y o a " ] g t A [ " l " 日 v " " p r b j e " l " E v " " p r b j e p n " : " : 本 a : : e m e a " t " : " : n a : : e m e a " t s n h : 語 t " a l " 日 " h : g t " a l " E " : t " [ i { " : t " : 本 : t " [ l i { " : t " : n : t t A { ( o h " : 語 t A { i o h " : g / a p n m n t " : [ " p n s n t " : [ l " n t s n a " t T { ( h s n h " t T { i h a i : c : p e " m t : : p e " s t k o t h s x t a t t ( s x t h t a n / a i " : t e c p / a m " : t e p m P n t n s / " x h s n t a s / " x ( s u a a i e u / , t i : a i c u / , t m : r g k o - p n / n / k o h p n / a / a e a n g p a v e / a n i p a v c / 1 " m " e l k t - n m " n l k t h n 9 , u , n e a t g a u , e e a t i a 6 r e m m " e k r - m m " n k . a r e u , n a a g e u , e a g 1 a n r e m 1 e n r - m i 9 t t a r u 9 n t a g u t 6 e i 1 a r 6 e i 1 e r h . d n 9 t a . r n 9 n a u g ) g 6 e 1 g a g 6 e 1 b i " " . d 9 i t " . r 9 . t , g ) 6 t e , g a 6 i h i " . h d i t . o u t g u ) t e g / b h i b " h d i r . u t . u ) t a i b h i b " h m o . u o . u p / i b / i b _ r o . r o . d a / i a / i a m r o m r o t p a / p a / a _ m r _ m r / d p a d p a d a _ m a _ m e t d p t d p m a a _ a a _ o / t d / t d / d a a d a a 3 e / t e / t 5 m d a m d a 7 o e / o e / 1 / m d / m d 2 3 o e 3 o e 8 5 / m 5 / m 0 7 3 o 7 3 o / 1 5 / 1 5 / c 2 7 3 2 7 3 a 8 1 5 8 1 5 n 0 2 7 0 2 7 v / 8 1 / 8 1 a c 0 2 c 0 2 s a / 8 a / 8 / n 3 0 n 3 0 p v 5 / v 5 / a a 7 c a 7 c g s 1 a s 1 a e / 2 n / 2 n / a 8 v a 8 v 2 n 0 a n 0 a " n . s n _ s , o v " o e " t t t n a t a . t " t v i , i t o o t n n " / / , w w e e b b v v t t t t " / , 2 " , なお、Cloverでは、2つの文字起こしテキストが連続して表示されました。 ...

2024年7月12日 · 9 分 · Nakamura

字幕付きの音声ファイルをIIIFビューアで表示する

概要 字幕付きの音声ファイルをIIIFビューアで表示する機会がありましたので、備忘録です。 国立国会図書館 歴史的音源で公開されている「日本のアクセントと言葉調子(下)」を対象に、OpenAIのSpeech to textを使用しています。文字起こし結果には誤りが含まれていますので、その点はご注意ください。 以下は、Rampでの表示例です。 https://ramp.avalonmediasystem.org/?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下は、Cloverでの表示例です。 https://samvera-labs.github.io/clover-iiif/docs/viewer/demo?iiif-content=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下は、Aviaryでの表示例です。こちらについては、残念ながら今回使用したマニフェストファイルの形式では、文字起こしテキストは表示できませんでした。 https://iiif.aviaryplatform.com/player?manifest=https://nakamura196.github.io/ramp_data/demo/3571280/manifest.json 以下、これらのマニフェストファイルの作成方法について紹介します。 mp4ファイルの準備 以下の記事を参考に、mp4ファイルを取得します。 vttファイルの作成 OpenAIのAPIを使用して、文字起こしを行います。 f c a t w r l u r i o i d a t m e i n h n o s m f r f o t _ c o i e o i p f r d l s p l e = i i e e p e e n l p l = o n . a O e t = a n ( w i p = " u s o r e = w d e u i i n o h i _ t t m A p c i o f p e p I e l s _ o u ( o ( n i p f r t t r a ( e e i m _ r t p o n r l a v a i u t - e t t n O _ t . 1 , = t s p k p a " " _ c e e u u , v p r n y t d t a i A = _ i t t p I o m o " h t s p . ) , ) . 4 t g _ r " e p a w t a n " e t s , n h c v , r e ( i n " " p c O r t o P b i d E " o i N ) n n A s g I . = _ c " A r u P e t I a f _ t - K e 8 E ( " Y ) " ) a ) s f i l e : マニフェストファイルの作成 不完全なコードですが、以下のようなプログラムによって、マニフェストファイルを作成します。 ...

2024年7月10日 · 7 分 · Nakamura