以下の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2025/02/11/101153より取得しました。


PromptingTools.jlファーストインプレッション

PromptingTools.jlというモジュールがあるのは知っていましたが,OpenAIのアカウントがいるし… ということであまりチェックしていませんでした。

ただ,ついさっきOllamaのモデルが使えることが分かったので少し試してみたいと思います。

まずはパッケージモードからモジュールを追加します。

(@v1.11) pkg> add PromptingTools
    Updating registry at `~/.julia/registries/General.toml`
    Installed PromptingTools ── v0.72.0
    Updating `~/.julia/environments/v1.11/Project.toml`
  [670122d1] + PromptingTools v0.72.0
    Updating `~/.julia/environments/v1.11/Manifest.toml`
  [1520ce14] + AbstractTrees v0.4.5[e9f21f70] + OpenAI v0.9.1
  [670122d1] + PromptingTools v0.72.0
  [c1b9e933] + StreamCallbacks v0.5.1
        Info Packages marked with ⌅ have new versions available but compatibility constraints restrict them from upgrading. To see why use `status --outdated -m`                                 
Precompiling project...
   5 dependencies successfully precompiled in 20 seconds. 437 already precompiled.
  3 dependencies had output during precompilation:
┌ PromptingTools
│  ┌ Warning: OPENAI_API_KEY variable not set! OpenAI models will not be available - set API key directly via `PromptingTools.OPENAI_API_KEY=<api-key>`!
│  └ @ PromptingTools ~/.julia/packages/PromptingTools/ra38n/src/user_preferences.jl:189
│  ┌ Warning: RAGTools will be moved into a dedicated package from PromptingTools v0.75 onward.
│  │ Please adjust your code accordingly, see https://github.com/JuliaGenAI/RAGTools.jl
│  └ @ PromptingTools.Experimental.RAGTools ~/.julia/packages/PromptingTools/ra38n/src/Experimental/RAGTools/RAGTools.jl:59
└  
┌ PromptingTools → MarkdownPromptingToolsExt
│  ┌ Warning: OPENAI_API_KEY variable not set! OpenAI models will not be available - set API key directly via `PromptingTools.OPENAI_API_KEY=<api-key>`!
│  └ @ PromptingTools ~/.julia/packages/PromptingTools/ra38n/src/user_preferences.jl:189
└  
┌ PromptingTools → RAGToolsExperimentalExt
│  ┌ Warning: OPENAI_API_KEY variable not set! OpenAI models will not be available - set API key directly via `PromptingTools.OPENAI_API_KEY=<api-key>`!
│  └ @ PromptingTools ~/.julia/packages/PromptingTools/ra38n/src/user_preferences.jl:189
└  

julia> using PromptingTools
┌ Warning: OPENAI_API_KEY variable not set! OpenAI models will not be available - set API key directly via `PromptingTools.OPENAI_API_KEY=<api-key>`!
└ @ PromptingTools ~/.julia/packages/PromptingTools/ra38n/src/user_preferences.jl:189

いっぱいWarningが出ます。OPENAPIのキーを設定しろって? そんなの知らねぇよ。

次にモジュールを読み込みます。入力が面倒なのでPTというエイリアスみたいなのを作ります。(チュートリアル通りともいう)

julia> using PromptingTools
┌ Warning: OPENAI_API_KEY variable not set! OpenAI models will not be available - set API key directly via `PromptingTools.OPENAI_API_KEY=<api-key>`!
└ @ PromptingTools ~/.julia/packages/PromptingTools/ra38n/src/user_preferences.jl:189

julia> const PT = PromptingTools
PromptingTools

モデルのレジストリの中身を確認します。

julia> PT.MODEL_REGISTRY.registry
Dict{String, PromptingTools.ModelSpec} with 143 entries:
  "Qwen/Qwen2.5-Coder-32B-Instruct"                          => ModelSpec…
  "nomic-embed-text"                                         => ModelSpec…
  "accounts/fireworks/models/dbrx-instruct"                  => ModelSpec…
  "accounts/fireworks/models/firefunction-v1"                => ModelSpec…
  "codestral-2405"                                           => ModelSpec…
  "mixtral-8x7b-32768"                                       => ModelSpec…
  …

何かいっぱい登録されています。一つ中身を見てみますか。

julia> PT.MODEL_REGISTRY.registry["Qwen/Qwen2.5-7B-Instruct-Turbo"]
PromptingTools.ModelSpec
  name: String "Qwen/Qwen2.5-7B-Instruct-Turbo"
  schema: PromptingTools.TogetherOpenAISchema PromptingTools.TogetherOpenAISchema()
  cost_of_token_prompt: Float64 1.8e-7
  cost_of_token_generation: Float64 3.0e-7
  description: String ""

どうもOpenAIのモデルのようですね。なので,自分がOllamaに登録しているモデルの一つをPromtingToolsに登録してみます。

julia> PT.register_model!(; name="qwen2.5-coder:14b-instruct-q4_K_M", schema=PT.OllamaSchema())
PromptingTools.ModelSpec
  name: String "qwen2.5-coder:14b-instruct-q4_K_M"
  schema: PromptingTools.OllamaSchema PromptingTools.OllamaSchema()
  cost_of_token_prompt: Float64 0.0
  cost_of_token_generation: Float64 0.0
  description: String ""
  
julia> model = "qwen2.5-coder:14b-instruct-q4_K_M"
"qwen2.5-coder:14b-instruct-q4_K_M"

早速何か質問してみます。自分が使っているGPUはメモリは16GBと多いものの,全然速くないものなので, 実行時間はそこそこかかります。

julia> aigenerate("Julia言語のDataFrameの作成方法を教えて下さい"; model)
[ Info: Tokens: 300 in 20.7 seconds
AIMessage("JuliaでDataFrameを作成するには、DataFrames.jlパッケージを使用します。以下に基本的な作法を示します。

  1. DataFrames.jlパッケージをインストールします。
```r
using Pkg
Pkg.add("DataFrames")
```

  2. DataFrameを作成するために、usingキーワードでDataFramesモジュールを読み込みます。
```lua
using DataFrames
```

  3. DataFrameを作成するために、DataFrame関数を使用します。以下に例を示します。

```makefile
df = DataFrame(a=[1,2,3], b=["x", "y", "z"])
```


  4. DataFrameの内容を表示するには、println関数を使用します。
```
println(df)
```


  5. DataFrameに新しい列を追加するには、以下のように行います。

```lua
df[:c] = [true, false, true]
```


  6. DataFrameから特定の列を取り出すには、以下のように行います。

```makefile
col_a = df[!, :a]
```

以上が基本的なDataFrame作成方法です。詳細な使い方はDataFrames.jlのドキュメントを参照してください。")

とりあえず,使えそうですね。詳細の内容はボチボチ確認していきます。

というかcode fenceのところ無駄にRだったりluaだったりmakefileだったり無用のコード指定があるのがちょっとお茶目です。

RagToolsとか紹介されてたので, 今後うまく活用できればと思います。




以上の内容はhttps://ujimushisradjp.hatenablog.jp/entry/2025/02/11/101153より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14