Open21

ろーかるえるえるえむ

syakesabasyakesaba

いまじゆうにつかえるNVIDIA GeForce RTX 4080 SUPERがあるのでそれであそんだときのめも

syakesabasyakesaba

とりあえず、はやってるのでせいせいえーあいであそぶ

syakesabasyakesaba

色々とコンポーネントがあるんだろうけど、とりあえず、モデルの選定から。
Pythonが得意なので、必然的にlangchainを使うことを前提にする。
よって、
https://python.langchain.com/v0.2/docs/integrations/llms/
を見て、やりたいことができるかどうかを確認するのがよい。

syakesabasyakesaba

Tool callingには対応しているらしい。
あと、async対応なのはローカルLLMならでは、か。

syakesabasyakesaba

微調整(ふぁいんちゅーにんぐ)には価値を見いだせない。

埋め込みたいデータがあるなら、オープンにしてSEOして
GoogleさんとかAzureさんのより良いモデルに埋め込んで頂いた方が
環境にも優しいし、楽ではないか?

syakesabasyakesaba

RAG(けんさくかくちょうせいせい?)には価値を見いだせる。

微調整で得られた無責任なベクトルよりはよっぽど信頼性が高く、情報源のトレサビができる。

syakesabasyakesaba

試してみる。

from typing_extensions import Annotated, TypedDict


class add(TypedDict):
    """Add two integers."""

    # Annotations must have the type and can optionally include a default value and description (in that order).
    a: Annotated[int, ..., "First integer"]
    b: Annotated[int, ..., "Second integer"]


class multiply(BaseModel):
    """Multiply two integers."""

    a: Annotated[int, ..., "First integer"]
    b: Annotated[int, ..., "Second integer"]


tools = [add, multiply]

from langchain_ollama import ChatOllama

llm = ChatOllama(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://localhost:8080", )

llm_with_tools = llm.bind_tools(tools)

query = "What is 3 * 12?"

llm_with_tools.invoke(query)
syakesabasyakesaba

ResponseError: Llama-3-Groq-8B-Tool-Use.Q6_K:latest does not support tools

syakesabasyakesaba

ResponseError: Llama-3-ELYZA-JP-8B-q4_k_m:latest does not support tools

syakesabasyakesaba
from langchain_core.pydantic_v1 import BaseModel, Field

class add(BaseModel):
    """Add two integers."""

    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")

class multiply(BaseModel):
    """Multiply two integers."""

    a: int = Field(..., description="First integer")
    b: int = Field(..., description="Second integer")


tools = [add, multiply]

# from langchain_ollama import ChatOllama
from langchain_experimental.llms.ollama_functions import OllamaFunctions

llm = OllamaFunctions(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://localhost:8080", format="json")

llm_with_tools = llm.bind_tools(tools)

query = "10*100?"

llm_with_tools.invoke(query).tool_calls
[{'name': 'multiply',
  'args': {'a': 10, 'b': 100},
  'id': 'call_5e81e9ec73f444d295b1e7f6e56ebbf1',
  'type': 'tool_call'}]
syakesabasyakesaba

ChatOllamaではなく、OllamaFunctionsはちゃんとbindできてるな・・・なんだこれ。

syakesabasyakesaba

ModelfileにTool Callingの文法を書かないといけないみたいだ。
面倒なので、ollama pull使うとChatOllamaでもうまくいった。

syakesabasyakesaba
syakesabasyakesaba

Youtube Loader

from langchain.vectorstores import Chroma
from langchain.indexes import VectorstoreIndexCreator
from langchain.embeddings.ollama import OllamaEmbeddings
from langchain.llms.ollama import Ollama
from langchain.document_loaders import YoutubeLoader

set_proxy()

youtube_url = "https://www.youtube.com/watch?v=wsUugTs1MsQ"
loader = YoutubeLoader.from_youtube_url(youtube_url, language=["ja"])
emb = OllamaEmbeddings(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://ollama.local:8080", )
idx = VectorstoreIndexCreator(
    vectorstore_cls=Chroma, # Default
    embedding=emb,
    vectorstore_kwargs={
        "persist_directory": "{}.db".format("VectorstoreIndexCreator.OllamaEmbeddings.gemma-2-2b-it-Q6_K_L")
    },
).from_loaders([loader])
idx.vectorstore.persist() # インデックスを保存する

query = "この文章から考えられる株価への影響を日本語で教えて下さい。"

llm = Ollama(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://ollama.local:8080", )
answer = await idx.aquery(query, llm)

print(answer)
この文章からは、日本原電の鶴発電所2号機の再稼働に関する政府の方針や、中東情勢の影響など、株価に直接的な影響を与える要素が明らかになっていません。 

ただし、以下の点に注意が必要です。

* **規制委員会の判断と今後の対応:** 原発の再稼働は、新規制基準に適合するため、規制委員会の意見を考慮する必要があるでしょう。政府が「セーフ」とした再稼働を今進めようとすると、株価は上昇の可能性があります。
* **中東情勢:** イスラエルへの報復など中東情勢の変化は、エネルギー供給全体に影響を与える可能性があり、日本原電の株価にも影響を与えます。 

これらの要素は複雑であり、将来の株価変動には影響を与える可能性がありますが、この文章だけでは具体的な予測を行うことはできません.  

syakesabasyakesaba

ベクトルストアの再読み込み

from langchain.vectorstores import Chroma
from langchain.embeddings.ollama import OllamaEmbeddings
from langchain.indexes.vectorstore import VectorStoreIndexWrapper
from langchain.llms.ollama import Ollama

# 既存のベクトルストアを読み込む
persist_directory = "VectorstoreIndexCreator.OllamaEmbeddings.gemma-2-2b-it-Q6_K_L.db"
emb = OllamaEmbeddings(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://ollama.local:8080", )
# ベクトルストアを再利用するために読み込み
vectorstore = Chroma(persist_directory=persist_directory, embedding_function=emb)
idx = VectorStoreIndexWrapper(vectorstore=vectorstore)

# 新しいクエリを実行
query = "この文章から考えられる社会的影響を日本語で教えて下さい。また、その文章の公表された日付を教えて下さい。"

llm = Ollama(model="gemma-2-2b-it-Q6_K_L:latest", base_url="http://ollama.local:8080", )
answer = idx.query(query, llm)

print(answer)
## Societal Impacts and Publication Date from the Text:

This text suggests several potential societal impacts, including:

* **Energy Supply Concerns:** Japan is concerned about the impact of tensions on its energy supply. The possibility of disruptions to energy supplies due to regional conflicts is highlighted as a key concern. 
* **Nuclear Power Reactors:**  The discussion surrounding the restarting of nuclear power plants in Japan raises concerns about radiation safety and public perception. This relates to the Fukushima Daiichi Nuclear Disaster and ongoing anxieties around nuclear technology.
* **Local Community Relations:** The text indicates potential tensions between local communities and energy companies, especially regarding the restart of nuclear power plants like those at Tōkai Electric Power Company. 
* **International Relations:** The text highlights the importance of Japan's diplomatic efforts to maintain peace and stability in the region, suggesting that international relations will be a significant factor in navigating these challenges.


**Publication Date:**  Unfortunately, the exact publication date cannot be determined from the provided text. It is likely a transcript or recording of an official meeting, which may not include a specific timestamp for publication. 

Please note: The text focuses on political and economic discussions related to energy and international relations in Japan. 


Let me know if you have any further questions! 

急に英語・・・そして、日付情報は保存されていない。