File size: 1,546 Bytes
5949f3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from itertools import islice
from duckduckgo_search import DDGS
from langchain_core.tools import tool
from langchain_core.pydantic_v1 import (BaseModel, Field)


class SearchDDGInput(BaseModel):
    query: str = Field(description="検索したいキーワードを入力してください")


@tool(args_schema=SearchDDGInput)
def search_ddg(query, max_result_num=5):
    """
    DuckDuckGo検索を実行するためのツールです。
    検索したいキーワードを入力して使用してください。
    検索結果の各ページのタイトル、スニペット(説明文)、URLが返されます。
    このツールから得られる情報は非常に簡素化されており、時には古い情報の場合もあります。

    必要な情報が見つからない場合は、必ず `WEB Page Fetcher` ツールを使用して各ページの内容を確認してください。
    文脈に応じて最も適切な言語を使用してください(ユーザーの言語と同じである必要はありません)。
    例えば、プログラミング関連の質問では、英語で検索するのが最適です。

    Returns
    -------
    List[Dict[str, str]]:
    - title
    - snippet
    - url
    """
    res = DDGS().text(query + " latest", region='JP', safesearch='off', backend="lite")
    return [
        {
            "title": r.get('title', ""),
            "snippet": r.get('body', ""),
            "url": r.get('href', "")
        }
        for r in islice(res, max_result_num)
    ]