0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

OllamaとFirecrawlをColabで動かす

Last updated at Posted at 2024-11-28

はじめに

URLを入力したらそこから情報を自動で抽出してくれるツールとか作れたら便利そうだと思い、色々調べています。それにあたり、この記事ではOllamaとFirecrawlについて説明します。Colabで簡単に動かしてみたので、この記事で紹介します。また、Ollamaを呼び出すためにLiteLLMを使っており、以下で説明していきます。

Ollamaについて

以下の記事を参考にさせていただきました。

Ollamaはローカル環境でLLMを使用でき、プライバシーに関する懸念がなくなります。
また、Llama 3,Gemma など、様々なオープンソースモデルをOllamaの公式ライブラリでサポートしており、簡単に利用できます。さらに、Ollamaの公式ライブラリに登録していないものでも、Hugging Faceに置かれていれば簡単に利用できます。

LiteLLMについて

以下の記事を参考にさせていただきました。

LLMに関するライブラリとしては、例えばLangChainが有名ですが、LiteLLMはLangChainほど様々な機能は搭載していないものの、LLMの呼び出しの部分に特化しているようなイメージです。
Litellmを使えば、OpenAI APIのフォーマットで、様々なプロパイダーのLLM APIを呼び出せるようになります。

Firecrawlについて

以下の記事を参考にさせていただきました。

Firecrawlは、Webサイトのデータを効率的にクローリングし、必要な情報を抽出するためのツールです。
指定されたURLから始まり、Webサイト全体をクローリングした上で、データをLLM向けのMarkdownや構造化データに変換する機能を持っています。
また、FirecrawlはPython SDKを使用して簡単にFirecrawl APIと連携することができます。

Colabで試してみた

この記事ではColabでOllamaを動かす、FirecrawlでWebサイトの情報を抽出させる、Ollamaでそれを要約させるところまで試してみます。
まずはColabでOllamaを使えるようにします。以下記事を参考にさせていただきました。

以下を実行し、Ollamaのインストールとcudaドライバーのインストールをします。

!curl https://ollama.ai/install.sh | sh

!echo 'debconf debconf/frontend select Noninteractive' | sudo debconf-set-selections
!sudo apt-get update && sudo apt-get install -y cuda-drivers

次に、Ollamaサーバーの起動とモデルをダウンロードします。
今回はLlama-3-ELYZA-JP-8Bをダウンロードしています。
Llama-3-ELYZA-JP-8Bは、ELYZA社が開発した日本語に特化した大規模言語モデルです。Meta社の「Llama 3」シリーズをベースに、日本語での追加学習を行っています。

!nohup ollama serve &

!ollama pull hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF

ではLiteLLMで呼び出して実際に動かしてみます。

!pip install litellm

ライブラリをインストールし、

from litellm import completion

response = completion(
    model="ollama/hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF", 
    messages=[{ "content": "transformerについて解説して","role": "user"}], 
    api_base="http://localhost:11434"
)
print(response)

上のコードを実行するだけで簡単に動かすことができました。
image.png
次にFirecrawlを試します。

!pip install firecrawl-py

ライブラリをインストールし、

from firecrawl import FirecrawlApp

app = FirecrawlApp(api_key="API-KEY")

content = app.scrape_url("https://openai.com/ja-JP/about/")

このコードを実行するだけで、指定したURLをスクレイピングできます。サイト全体のクローリングも可能です。
contentの中身を確認してみると、以下のようになっていました。
image.png
雑にそのままLlama-3-ELYZA-JP-8Bに要約させてみます。

response = completion(
    model="ollama/hf.co/elyza/Llama-3-ELYZA-JP-8B-GGUF", 
    messages=[{ "content":  f'''以下はある企業のHPの内容です。ここから企業情報を要約して\n{ content['markdown'] }''',"role": "user"}], 
    api_base="http://localhost:11434"
)
print(response['choices'][0]['message'].content)
[OpenAIについて学ぶ](/ja-JP/index/openai-lp/) [当社の体制について読む](/ja-JP/our-structure/)

#### 私たちの取り組み

私たちは、AI技術を社会に還元し、人類全体の利益を追求するために日々努力しています。AIが世界中の人々の生活を向上させるために、私たちは以下のような取り組みを行っています。

## 1. AI for Social Impact

私たちは、AIを活用して社会的課題を解決することを目指しています。例えば、AIを使用した医療診断や、AIが自動車の安全運転をサポートするなどです。

## 2. AI Research

私たちは、人工知能の限界を超えるために、継続的に研究を行っています。これには、強いAIの開発や、AIと人間の協調的な相互作用の実現などが含まれます。

## 3. Education and Community Building

私たちは、AI技術の普及と教育に力を入れています。私たちの目標は、世界中でAIを理解し、活用することができる人材を育成することです。私たちは、学生や研究者向けのリソースや、コミュニティーを提供しています。

## 4. Corporate Partnerships

私たちは、企業と協力して、AI技術を社会に還元する取り組みを行っています。これには、AIを活用した新しい製品やサービスの開発、AIを使用したプロセス改善、などが含まれます。

## 5. Transparency and Accountability

私たちは、透明性と説明責任を重視し、AI技術の社会的影響を常に検証しています。私たちの目標は、AI技術が公正かつ安全に使用され、人類全体の利益になることです。

[OpenAIについて学ぶ](/ja-JP/index/openai-lp/) [当社の体制について読む](/ja-JP/our-structure/)

### OpenAIの採用情報

私たちは、人工知能の未来を切り拓くために、多才な人材を求めています。以下は、私たちの採用機会です。

## 1. Software Engineer

私たちは、ソフトウェアエンジニアを募集しています。私たちのAI技術の開発や改良に参加し、革新的な製品やサービスを創造することができます。

## 2. Research Scientist

私たちは、研究科学者を募集しています。私たちのAI技術の限界を超えるために、新しいアイデアや手法を探求し、人工知能の進歩に貢献することができます。

## 3. Data Analyst

私たちは、データ分析家を募集しています。私たちのAIモデルが最適化されるように、大規模なデータセットを解析し、有益な情報を抽出することができます。

## 4. Content Reviewer

私たちは、コンテンツレビューアーを募集しています。私たちのAI技術が、公正かつ安全に使用されるように、高品質のコンテンツを監視し、不適切なコンテンツを特定することができます。

[求人情報を見る](/careers/) [OpenAIについて学ぶ](/ja-JP/index/openai-lp/) [当社の体制について読む](/ja-JP/our-structure/)

こんな感じになりました。

終わりに

この記事ではOllamaとFirecrawlをColabで軽く動かしてみました。
Firecrawlは試しにスクレイピングをしてみただけですが、マークダウン形式で情報を取得することができ、そのままLLMに投げて要約とか、クローリングして色々な情報を抽出した後にLLMに欲しい情報だけ取ってきてもらうとか、Ollamaと組み合わせて色々試せそうです。
このあたり引き続き調べていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?