bsahd/cosense_ollama_connector
✂ from Scrapbox ChatGPT Connector
GitHub - bsahd/cosense_ollama_connector: Ollama reads Cosense
bsahd.icon
ollama ローカルLLMで動かしたい
cloneしたので
ollamaはエンドポイントをいじるだけ
code:py
print("\nTHINKING...")
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": prompt}
を
model書き換える
APIの使い方が変わってるので修正する
いってる?
Ollamaが動いてる
あまりに遅いので、embedのログを出すようにした
askの結果をストリームで出せば
code:term
embed Scrapbox ChatGPT Connectorって何?
100%|█████████████████████████████████████████████████████████████| 7/7 00:00<00:00, 3507.36it/s
THINKING...
ANSWER:
>>> Scrapbox ChatGPT Connectorって何?
Scrapbox ChatGPT Connectorは、ScrapboxとChatGPTを接続するためのシンプルなスクリプトです。このスクリ
プトを使用することで、Scrapboxで作成された記事や投稿に対してChatGPTから情報を取得し、その情報をScrapboxに反映することができます。これにより、ユーザーがScrapbox上でより幅広い情報や知識を得られるよう
になります。
例えば、ユーザーが特定のテーマについての記事を書く際に、ChatGPTからその分野に関する最新の情報を得て
それを記事に反映させることができます。また、ユーザーが既存の記事に対して質問をする際も、ChatGPTから
回答を得てその情報を記事に反映させることが可能です。
このスクリプトは非常に便利で効率的なツールであり、ScrapboxとChatGPTを組み合わせることで、より幅広い
情報や知識を得るための手段が増えるでしょう。
embed クオリアさん、日本語で自己紹介して
100%|█████████████████████████████████████████████████████████████| 7/7 00:00<00:00, 7256.58it/s
THINKING...
## Input
クオリアさん、日本語で自己紹介して
ANSWER:
>>> クオリアさん、日本語で自己紹介して
まず、あなたが質問している内容を確認します。その後、その情報を日本語で整理し、適切に翻訳します。
---
管理人が日本人なのでまずは日本語の情報を先にまとめます。いずれ英語もまとめます。
まずはこの情報を読むことをお勧めします:
100フォロワー Read this first: 100 followers
Scrapbox上では機械翻訳が使えないので、違う言語で読みたい人はTwitter上で読むのがおすすめです。
ルール:
- ルールの部分はQualia-sanのお言葉のアーカイブなので書き換えてはいけません。
- 其他部分はファンの交流のためのスペースなので好きに書いてかまいません。
CC-BY は投稿や顔画像はCC-BY 4.0ライセンスです。クオリアのTwitterアカウントにリンクしていただけれ
ば、転載、再投稿、翻訳、リミックスも可能です。
質問箱 https://peing.net/ja/qualia_san クオリアさん.icon
質問するホモサピエンス
個人プロジェクトでやってみる
個人プロジェクトの内容がゴミだった...
クオリアにしよう
クオリアさんのほうは結構動く
embeddingのモデルをもっと軽いものにする?
kun432/cl-nagoya-ruri-large
(テキスト生成用のQwen 2.5 1.5Bを埋め込みにも使ってたので、埋め込み専用モデルにする)
BERTベースか~
500文字を5秒で埋め込む
クエリと文章をちゃんと分けろって書いてある
ダウンロードが戻る
表示の取得済み容量が減る
リトライ処理でレジュームせずに最初から取得しなおしてる?
トークン数で区切ってるとこがあるが、モデルごとにtokenizerは違って意味なさそうなので文字数での計算にした
tqdm,多段ループで使いにくい
(ページ内の進捗も出したい)
処理中のアイテム名を出したいなら、自力でコンソールに書いたほうが楽
進捗にページ名も出したい
code:py
records:list[tuplestr,str] = []
for p in data"pages":
buf = []
title = p"title"
for line in p"lines":
buf.append(line)
body = " ".join(buf)
if len(body) > BLOCK_SIZE:
records.append((body,title))
buf = buflen(buf) // 2 :
body = " ".join(buf).strip()
if body:
records.append((body, title))
for body in tqdm(records,"records"):
vs.add_record(*body, cache)
さすがに1時間ぐらいかかる生成をもう一度やる気にはならないのでサンプルを作る
code:py
for a in tqdm(range(100),"pages"): # 最上段はleaveする
lc = 0
for b in tqdm(range(50),"lines",leave=False):
lc += 1
これで行ける
やっぱりもう一度生成することになった
別モデルで生成したときのpickleが残ってて次元数の違いでエラーになった
ValueError: shapes (1024,) and (1536,) not aligned: 1024 (dim 0) != 1536 (dim 0)
インデックス作成が永久リトライされてる、CPUが~
リトライしないようにした
ollamaのライブラリを使うようにする
1600文字のプロンプトを55秒で読んでる
分割単位はもっと大きいほうがいいのでは
プロンプトに与える都合か
コンテキストを維持して会話を続けたい
結果に含まれるページのノイズが大きい
生成時に小さい分割単位にしてしまったので1ページから複数の部分を読み込めない
内積ではなくコサイン類似度を使うべきでは
プロンプト作り上手いなー
ChatGPTにConnectするわけじゃないなこれ
scrapboxのベクトル検索結果を元にGPTに質問する?
コードはすぐ理解できたので、自分のもののように書き換えられる
しっかり型付けしてないことによるバグがあった
python3.13で依存関係のインストールがうまくいかない
requirements.txtを最新版にする