人気ブログランキング | 話題のタグを見る
ブログトップ

EARLの医学ノート

drmagician.exblog.jp

敗血症をメインとした集中治療,感染症,呼吸器のノート.医療におけるAIについても

【AI】GPT「PubMed Searcher」のアップデートVer.1.1_e0255123_14514794.png
PubMed Searcher Ver.1.1バージョンアップ内容
・回答精度をあげるための指示の修正
・論文リストから目的に合った論文に緩く絞り込むスクリーニングプロンプト追加
・Elinkエンドポイントの追加による指示・アクションスキーマの変更(関連論文,引用論文,被引用論文の取得)
■2024年5月18日にPubMedの網羅的検索をChatGPTのユーザーインターフェース上で行えるGPTの作成方法を考案し,公開した.今回はそのアップデートである.
【AI】ChatGPTとAPIを使って網羅的なPubMed検索できるGPT「PubMed Searcher」
EARLの医学ノート
https://drmagician.exblog.jp/31031028/
■私が行ったのはGPTの提供ではなく,雛型の提供であり,各自でGPTを作成するぶん,自分で指示やアクションをカスタマイズできる.今回はその私なりのカスタマイズであるマイナーアップデート(Ver.1.1)で,あくまでも「網羅的検索」を想定しているもので,検索結果をむしろ絞りたい方は絞る指示に変えるとよい.

今回のアップデートの変更点

■実際に使用してみた方は分かるかもしれないが,GPTは確率的な動作を行う仕様の関係上,どうしても指示通りの回答出力にならないこともある.例えば,検索式が網羅的ではない,検索式に日本語が混じってしまう,ANDとORの使い方を間違う,検索結果が4件以上なら全論文をExcelファイルにまとめる指示なのに最初の20件しかまとめない,ESummeryを使う指示の場面でEfetchを使う,Excelにまとめるべきところで論文リストを回答に羅列する,などが挙げられる.これらの適切でない回答出力を減らすため,GPTの指示を改訂した.

(1)temperatureの指示
■全体を通して回答出力のtemperatureを低めにするよう指示している.これは,GPT自体にtemperatureというパラメーターがあり,このパラメーター値が低いほどブレのない回答になり,高いほど独創性が高い回答となる.ChatGPTやGPTsではこのパラメーターの設定はできない仕様であるが,ChatGPTにパラメーター指示を与えると,そのパラメーター値を模倣する性質をもっている.PubMed Searcherでは独創性は不要で,指示への忠実さが必要となるため,低くするよう指示した.

(2)検索式作成
■検索式を作成する際に日本語が混じることがあったため,日本語を含まないよう指示した.また,薬剤名に関しては,同クラスの一般名,薬理学名や化学名等をすべて含めることとした(例えば,Clinical Questionにステロイドがあっても,グルココルチコイドやプレドニゾロンといった名称が検索式に含まれないことがあった).また,AND,OR,()を適切に使用できていないことがよくあったため,明記した.

(3)検索結果の表示方法選択提示
■GPTが検索(ESearch)を行い,「〇件がヒットしました.」という回答の後に,これまではそのままESummaryでの詳細情報取得に移っていたが,この際に,「4件以上ある場合は表示せずExcelファイルにまとめる」が守られずに表示されていったり,「ヒットした論文をすべてExcelファイルにまとめる」が守られず10件または20件しかファイル化されない,ということも起こっているため,段階を踏んで指示遵守率を上げるため,一旦ESearchによる検索結果でのヒット数を提示し,その後の論文リスト提示方法(ChatGPT上で表示するか,Excelファイル化するか)をユーザーが選択できるようにした.

(4)関連論文,引用論文,被引用論文の取得
■新たにアクションのスキーマにおいて,ELinkのエンドポイントを追加し,特定の論文の関連論文,引用論文,被引用論文の情報も入手できるようにした(同時に指示も追加).ただし,PubMed掲載がかなり新しいものについてはこれらの情報は入手できないことに注意が必要である.

(5)目的に応じた論文リストのスクリーニングプロンプト
■試作段階のものであるが,論文リスト(Excelファイル)を,PICOなどに合致する論文に絞り込むスクリーニングを行うためのコードをプロンプトに追加した.論文リストを提示した上で,タイトルスクリーニングまたはアブストラクトスクリーニングを指示すれば動く.もともとGPTは「選択」というタスクが苦手なため,スクリーニングによる絞り込みはあまり得意ではないが,目的の論文がはじかれないようなプロンプトにしているため,絞り込みとしてはだいぶ緩めである.

■改訂したGPT指示(Instructions)は以下の通りである.GPTの指示の部分にコピペでOK.
This GPT will assist the user in retrieving literature information from PubMed.
It should be able to search PubMed using a specific query provided by the user and return relevant article information GPT should leverage NCBI account details and API keys to access PubMed data.

temperature:
 Keep the temperature parameter low when outputting responses.

response_to_clinical_question:
 steps:
  - Extract as many all relevant terms (synonym or quasi-synonym) as possible from the Clinical Question provided by the user according to the following rules.
    - Terms to be included in the search formula should not be in Japanese.
    - When the pharmacological or chemical class name of a drug is specified, include the pharmacological, chemical, or generic name of the drug.
  - Create your search query according to the following rules.
    - Enclose terms in double quotation marks.
    - Use "AND", "OR", "()" operators for tech theory.
      For example, in a search formula to find studies of drug X for septic DIC in adults, for the part corresponding to Participants, instead of (“adults” OR “sepsis” OR “DIC”), use ((“term 1 for adults” OR “term 2 for adults” OR...) AND (“term 1 for sepsis” OR “term 2 for sepsis” OR...) AND (“term 1 for DIC” OR “term 2 for DIC” OR...) (OR...) AND (“term 1 for DIC” OR “term 2 for DIC” OR...))
  - Ensure the search query is highly sensitive but not highly specific.
  - Ask the user for confirmation before performing the search.

search_results:
 - Indicate the number of search results and ask the user if he/she would like to compile the list of papers into an Excel file or output them in a table in the GPT response before proceeding to the next ESummary step.
 - At this point you should not output detailed paper information without permission.

esummary_step:
 - Obtain article information with ESummary.
 - If the user wishes to view the results on ChatGPT, a table with the PMID, article title of all results will be presented.
 - If the user wishes to compile all results into an Excel file, do not display article details in the response.

excel_file:
 - Include all articles in the Excel file without setting a limit on the number of articles.
 columns:
 - PMID
 - URL: Create a hyperlink to the article's PubMed page in the format https://pubmed.ncbi.nlm.nih.gov/PMID/
 - Title

upload:
 steps:
  - Verify that the number of articles in the file matches the number of search results.
  - Ensure each article includes all required information.
  - Redo the process if any information is missing.

efetch:
 usage: Use EFetch only when you need information on abstracts, authors or doi.

elink:
 usage: Use ELink and ESummery when you need information of similar papers, referenced papers or cited reference papers.

title_or_abstract_screening:
 If you are instructed to screen a list of papers, the following algorithm is used.
 import pandas as pd
 # Read the input file
 input_file = "path_to_input_excel_file.xlsx"
 df = pd.read_excel(input_file)
 # Extraction criteria (example with specified P, I, S)
 P = "specified Population"
 I = "specified Intervention"
 S = "RCT" # Change if a different Study Design is specified
 # Exclusion criteria (if S is RCT)
 exclude_terms = ["retrospective", "cohort study", "review", "meta analysis", "cross sectional", "observational study"]
 # Paper extraction function
 def extract_relevant_papers(df, P, I, S=None):
   extracted_df = df[df['Paper Title'].str.contains(P, case=False) & df['Paper Title'].str.contains(I, case=False)]
  if S:
   if S == "RCT":
    for term in exclude_terms:
      extracted_df = extracted_df[~extracted_df['Paper Title'].str.contains(term, case=False)]
   else:
     extracted_df = extracted_df[extracted_df['Paper Title'].str.contains(S, case=False)]
  return extracted_df
 extracted_df = extract_relevant_papers(df, P, I, S)
 # Save the output file
 output_file = "path_to_output_excel_file.xlsx"
 extracted_df.to_excel(output_file, index=False)
 print(f"The extracted list of papers has been saved to {output_file}.")
■追加改訂したアクションのスキーマは以下の通りである.「新しいアクション」ではなく,作成済みの「eutils.ncbi.nlm.nih.gov」を選択し,既に入力済みのスキーマの下に以下をコピペでOK.なお,「Your NCBI API key」と赤字で書かれた部分はAPIキーに置き換える.
/elink.fcgi/similar:
 get:
  operationId: fetchSimilarArticles
  summary: Fetches similar articles for a specified UID.
  parameters:
    - name: dbfrom
      in: query
      required: true
      schema:
        type: string
        example: pubmed
      description: The originating database (e.g., pubmed).
    - name: db
      in: query
      required: true
      schema:
        type: string
        example: pubmed
      description: The database to link to (e.g., pubmed).
    - name: id
      in: query
      required: true
      schema:
        type: string
      description: A comma-separated list of UIDs of the articles.
    - name: cmd
      in: query
      required: true
      schema:
        type: string
        example: neighbor
      description: Command to run (e.g., neighbor).
    - name: api_key
      in: query
      required: true
      schema:
        type: string
      description: Your NCBI API key.
  responses:
    '200':
      description: Similar articles information
      content:
        application/json:
          schema:
            type: object
            properties:
              linksets:
                type: array
                items:
                  type: object
                  properties:
                    dbfrom:
                      type: string
                    linksetdbs:
                      type: array
                      items:
                        type: object
                        properties:
                          dbto:
                            type: string
                          linkname:
                            type: string
                          links:
                            type: array
                            items:
                              type: string
/elink.fcgi/references:
 get:
  operationId: fetchReferences
  summary: Fetches references for a specified UID.
  parameters:
    - name: dbfrom
      in: query
      required: true
      schema:
        type: string
        example: pubmed
      description: The originating database (e.g., pubmed).
    - name: linkname
      in: query
      required: true
      schema:
        type: string
        example: pubmed_pubmed_refs
      description: The name of the link (e.g., pubmed_pubmed_refs).
    - name: id
      in: query
      required: true
      schema:
        type: string
      description: A comma-separated list of UIDs of the articles.
    - name: api_key
      in: query
      required: true
      schema:
        type: string
      description: Your NCBI API key.
  responses:
    '200':
      description: References information
      content:
        application/json:
          schema:
            type: object
            properties:
              linksets:
                type: array
                items:
                  type: object
                  properties:
                    dbfrom:
                      type: string
                    linksetdbs:
                      type: array
                      items:
                        type: object
                        properties:
                          dbto:
                            type: string
                          linkname:
                            type: string
                          links:
                            type: array
                            items:
                              type: string
/elink.fcgi/citedby:
 get:
  operationId: fetchCitedBy
  summary: Fetches cited references for a specified UID.
  parameters:
    - name: dbfrom
      in: query
      required: true
      schema:
        type: string
        example: pubmed
      description: The originating database (e.g., pubmed).
    - name: linkname
      in: query
      required: true
      schema:
        type: string
        example: pubmed_pubmed_citedin
      description: The name of the link (e.g., pubmed_pubmed_citedin).
    - name: id
      in: query
      required: true
      schema:
        type: string
      description: A comma-separated list of UIDs of the articles.
    - name: api_key
      in: query
      required: true
      schema:
        type: string
      description: Your NCBI API key.
  responses:
    '200':
      description: Cited references information
      content:
        application/json:
          schema:
            type: object
            properties:
              linksets:
                type: array
                items:
                  type: object
                  properties:
                    dbfrom:
                      type: string
                    linksetdbs:
                      type: array
                      items:
                        type: object
                        properties:
                          dbto:
                            type: string
                          linkname:
                            type: string
                          links:
                            type: array
                            items:
                              type: string

# by DrMagicianEARL | 2024-05-22 14:32 | 医学・医療とAI
GPT “PubMed Searcher” for exhaustive PubMed searches using ChatGPT and API._e0255123_16055578.png
Although there are some useful AI programs such as Consensus, Elicit, and Perplexity, they are not perfect and manual PubMed search is still the most exhaustive and accurate. If ChatGPT directly handles the PubMed database and its search function, it is possible to perform exhaustive searches easily while maintaining the accuracy of manual searches, and to file the search results, extract articles, and provide commentaries on the ChatGPT user interface.

ChatGPT is equipped with a web access function using Bing, but it is better to prompt the user to use a specific article search engine when searching for articles on ChatGPT. However, ChatGPT does not load the PubMed site well, and the following problems are likely to occur.
Halcination occurs when PubMed search results are not loaded (false results are displayed).
The abstract page of an article does not load properly.
Only one page of the article search results can be read.
This happens because of the following

(1) Dynamic content
The PubMed website often dynamically generates content and uses JavaScript to display information. This makes it difficult for web scraping tools to accurately retrieve information.

(2) Complexity of page structure
The structure of PubMed web pages is complex, involving many links and database queries. This can make it difficult to extract specific information accurately.

(3) Limitations and defensesPubMed has restrictions and safeguards to prevent excessive access by automated tools, which may limit the retrieval of information.

Therefore, you can avoid such problems by retrieving information via the API instead of accessing the PubMed site. In the following, I introduce a GPT “PubMed Searcher” that retrieves PubMed search results via API.

1. How GPT "PubMed Searcher" works

Paid users of ChatGPT (Plus members: $20/month subscription) can create their own personal bot, GPT. You can create a PubMed Searcher with this GPT (Since an individual API key is required, this service is not open to others and can only be used by the user). In addition, PubMed releases its API free of charge (strictly speaking, you can specify PubMed as a parameter for selecting a database for Entrez's API provided by NCBI). API is an abbreviation for Application Programming Interface, which is an interface for software to communicate with each other. API stands for Application Programming Interface, and is an interface for software to communicate with each other, and is a so-called “key for exchanging information”. The API allows ChatGPT to access the PubMed database directly and pull article information.

The PubMed API requires an account with NCBI and your own API key. In other words, even if you create this GPT, you must not allow others to use it, and it is for your own use only. For this reason, the PubMed Searcher you have created is not available in the GPT store, and you must create it yourself. However, it is not so difficult to create a PubMed Searcher by following the procedure below, and you can do it from your smart phone.

2. Procedure for creating GPT "PubMed Searcher"

(1) Create an ncbi account
First, access the following URL to create an ncbi account.
https://www.ncbi.nlm.nih.gov/account/
(2) Obtain an API key
After obtaining an account, access the following account setup page and obtain an API key from the API Key Management section at the bottom of the page. This API key is for your own use only and should not be disclosed to others.
https://www.ncbi.nlm.nih.gov/account/settings
(3) Creating a GPT
Access the web version of ChatGPT, click “Explore GPTs” on the left bar, and then click "+ Create" on the upper right to open the GPT builder. Select "Configure" in the middle of the top bar, and set as follows:
- Icon image: You can set any image you like, or ask DALL-E3 to generate an image for you.
- Name: Set any name you like (e.g., PubMed Searcher).
- Description: A short description that is displayed when GPT is opened. Put any description you like (e.g., "This GPT is intended for exhaustive searches in PubMed").
- Instructions: Copy and paste the following (instructions are given using YAML to improve accuracy where structured information needs to be provided).
This GPT will assist the user in retrieving literature information from PubMed. It should be able to search PubMed using a specific query provided by the user and return relevant article information GPT should leverage NCBI account details and API keys to access PubMed data.

Keep in mind throughout
    - Follow the chain-of-thought process to carefully execute the task step-by-step.
    - Before outputting your response in Task Enforcement, make sure that you have properly followed the GPT's prompt before responding, and if not, revise your response accordingly.

Clinical Questionへの対応:
```yaml
clinical_question:
  steps:
    - Extract as many all relevant terms (synonym or quasi-synonym) as possible from the Clinical Question provided by the user according to the following rules.
        - Terms to be included in the search formula should not be in Japanese.
        - When the pharmacological or chemical class name of a drug is specified, include the pharmacological, chemical, or generic name of the drug.
    - Create your search query according to the following rules.
        - Enclose terms in double quotation marks.
        - Use AND, OR operators for tech theory.
    - Ensure the search query is highly sensitive but not highly specific.
    - Ask the user for confirmation before performing the search.

search_results:
  steps:
    - Indicate the number of results found.
    - If ESearch results exceed 3, do not display article details in the response.
    - Use ESummary to compile all results into an Excel file.
    - Include all articles in the Excel file without setting a limit on the number of articles.

excel_file:
  columns:
    - PMID
    - URL: Create a hyperlink to the article's PubMed page in the format https://pubmed.ncbi.nlm.nih.gov/PMID/
    - Title

upload:
  steps:
    - Verify that the number of articles in the file matches the number of search results.
    - Ensure each article includes all required information.
    - Redo the process if any information is missing.

efetch:
  usage: Use EFetch only when you need information on abstracts, authors or doi.

elink:
  usage: Use ELink when you need information of similar papers, referenced papers or cited referenced papers.
- Conversation starters: No special setting required.
- Knowledge: No special settings required.
- Capabilities: Check "Web Reference" and "Code Interpreter".
- Actions: Click "Create new action" and copy and paste the following into the "Schema" field
openapi: 3.0.0
info:
  title: PubMed API
  description: API to search and retrieve literature from PubMed using esearch, esummary, and efetch endpoints.
  version: 1.0.0
servers:
  - url: https://eutils.ncbi.nlm.nih.gov/entrez/eutils
    description: NCBI E-utilities server
paths:
  /esearch.fcgi:
    get:
      operationId: searchLiterature
      summary: Searches for literature in PubMed.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: term
          in: query
          required: true
          schema:
            type: string
          description: The search term(s).
        - name: retmax
          in: query
          required: false
          schema:
            type: integer
          description: The maximum number of results to return.
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, json).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Search results
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  type: integer
                retmax:
                  type: integer
                retstart:
                  type: integer
                ids:
                  type: array
                  items:
                    type: string
  /esummary.fcgi:
    get:
      operationId: getSummary
      summary: Retrieves the summary of literature based on search results.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: id
          in: query
          required: true
          schema:
            type: string
          description: A comma-separated list of UIDs of the articles.
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, json).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Summary details of the search results
        content:
          application/json:
            schema:
              type: object
              properties:
                uid:
                  type: string
                title:
                  type: string
                source:
                  type: string
                pubdate:
                  type: string
                authors:
                  type: array
                  items:
                    type: string
                volume:
                  type: string
                issue:
                  type: string
                pages:
                  type: string
                doi:
                  type: string
  /efetch.fcgi:
    get:
      operationId: fetchDetails
      summary: Fetches the details including abstracts for specified UIDs.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: id
          in: query
          required: true
          schema:
            type: string
          description: A comma-separated list of UIDs of the articles.
        - name: rettype
          in: query
          required: false
          schema:
            type: string
          description: The return type (e.g., abstract).
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, text).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Detailed information including abstracts
        content:
          text/plain:
            schema:
              type: string
  /elink.fcgi:
  get:
    operationId: fetchSimilarArticles
    summary: Fetches similar articles for a specified UID.
    parameters:
      - name: dbfrom
        in: query
        required: true
        schema:
          type: string
        description: The originating database (e.g., pubmed).
      - name: db
        in: query
        required: true
        schema:
          type: string
        description: The database to link to (e.g., pubmed).
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: A comma-separated list of UIDs of the articles.
      - name: cmd
        in: query
        required: true
        schema:
          type: string
        description: Command to run (e.g., neighbor).
      - name: api_key
        in: query
        required: true
        schema:
          type: string
        description: Your NCBI API Key.
    responses:
      '200':
        description: Similar articles information
        content:
          text/plain:
            schema:
              type: string

  /elink.fcgi:
  get:
    operationId: fetchReferences
    summary: Fetches references for a specified UID.
    parameters:
      - name: dbfrom
        in: query
        required: true
        schema:
          type: string
        description: The originating database (e.g., pubmed).
      - name: linkname
        in: query
        required: true
        schema:
          type: string
        description: The name of the link (e.g., pubmed_pubmed_refs).
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: A comma-separated list of UIDs of the articles.
      - name: api_key
        in: query
        required: true
        schema:
          type: string
        description: Your NCBI API Key.
    responses:
      '200':
        description: References information
        content:
          text/plain:
            schema:
              type: string

  /elink.fcgi:
  get:
    operationId: fetchCitedBy
    summary: Fetches cited references for a specified UID.
    parameters:
      - name: dbfrom
        in: query
        required: true
        schema:
          type: string
        description: The originating database (e.g., pubmed).
      - name: linkname
        in: query
        required: true
        schema:
          type: string
        description: The name of the link (e.g., pubmed_pubmed_citedin).
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: A comma-separated list of UIDs of the articles.
      - name: api_key
        in: query
        required: true
        schema:
          type: string
        description: Your NCBI API Key.
    responses:
      '200':
        description: Cited references information
        content:
          text/plain:
            schema:
              type: string
- In the copied and pasted schema, there are three places where "Your NCBI API Key." is written (shown in red in the box above), so replace those places with the API key you obtained.
- Click "Create" in the upper right corner. Set the disclosure range to "only me".

3. What you can do with GPT “PubMed Researcher

This GPT allows you to do the following by the above instructions.

(1) Generate PubMed search formulas according to Clinical Question
Generate an exhaustive PubMed search formula according to the Clinical Question (or any other question) you ask. To enable exhaustive searches, as many synonyms as possible for each term are added to the search formula, resulting in a search formula with high sensitivity and low specificity. At the end of the answer, you will be asked, "Can I use this search formula to search PubMed?" If you need to modify the formula, you can tell the modifications there.
GPT “PubMed Searcher” for exhaustive PubMed searches using ChatGPT and API._e0255123_16070099.png
(2) Search using ESearch
When a PubMed search is ordered, GPT first uses an API key to obtain the PMIDs of articles that have been hit as search results in ESearch. This obtains the number of hits and PMIDs of the articles. In this case, the response is "X papers hit". Based on this PMID, more detailed information on each paper can be obtained from ESummary and EFetch.

(3) Obtaining article information using ESummary
ESummary can obtain information on the title of an article, the journal in which the article is published, the year, volume number, and page number. Using this ESummary, we can obtain the article information from the PMID of the article obtained from ESearch in (2). However, because a considerable number of papers may be hit in an exhaustive search, and because of the limitation of GPT's response output, the number of papers is set to be automatically compiled into an Excel file using Advanced Data Analysis (formerly Code Interpreter) when the number of papers is four or more (this number can be changed). The information presented in the Excel file is the PMID, a link to the abstract of the article in PubMed, and the title of the article (if you include the journal name, etc., the system cannot process the file and times out). Due to ChatGPT's processing limitations, it is recommended to limit the number of articles that can be retrieved to about 200 at the most. If the number of papers is to be kept below this number, it is necessary to increase the specificity of the search formula.
GPT “PubMed Searcher” for exhaustive PubMed searches using ChatGPT and API._e0255123_16542303.png
As an application, you can instruct GPT to extract from this Excel file only the papers with titles that suit your purpose and re-file them (however, ChatGPT is not good at the task of “selection” and its extraction accuracy is high in sensitivity and low in specificity).

(4) Retrieving article abstracts using EFetch
EFetch can retrieve more detailed information on articles, including abstracts and doi. This makes it possible to directly ask GPT to explain the contents of abstracts.
GPT “PubMed Searcher” for exhaustive PubMed searches using ChatGPT and API._e0255123_16531339.png
(5) Obtaining similar articles, referenced articles, and cited reference articles
ELink can also be used to obtain information on similar articles, referenced articles, and cited reference articles for a particular paper. Note, however, that this information is not available for papers that are quite recent in PubMed.

# by DrMagicianEARL | 2024-05-20 16:12
■論文検索が可能なAIには,Consensus,Elicit,Perplexityなどがあり便利ではあるが,当然ながら完璧ではなく(漏れがでる),手動でのPubMed検索が一番網羅的で精度が高いことは変わらない.そこでPubMedというデータベースとその検索機能をChatGPTがダイレクトに操作してくれれば手動の精度を維持したまま網羅的検索を簡便に行える上に,その検索結果のファイル化,論文抽出,解説までChatGPTのユーザーインターフェース上で行うことができる

■ChatGPTにはBingを用いたウェブアクセス機能が備わっているが,ChatGPTで論文検索を行う上では特定の論文検索エンジンを使用することをプロンプトで指示した方がよい.しかしながら,ChatGPTはPubMedのサイトをうまく読み込めず,以下のようなトラブルが発生しやすい.
・PubMed検索結果を読み込めずハルシネーションを起こす(偽の結果を表示する)
・論文Abstractのページをうまく読み込めない
・論文検索結果で表示された1ページ分しか読み込めない
■このようなことが起こるのは以下のことが原因である.

(1)動的コンテンツ
■PubMedのウェブサイトは動的にコンテンツを生成することが多く,JavaScriptを使用して情報を表示する.これにより,ウェブスクレイピングツールが正確に情報を取得するのが難しくなる.

(2)ページ構造の複雑さ
■PubMedのウェブページの構造が複雑であり,多くのリンクやデータベースクエリが絡み合っている.このため,特定の情報を正確に抽出するのが難しい場合がある.

(3)制限や防御策
■PubMedは自動化されたツールによる過度なアクセスを防ぐための制限や防御策を持っているため,情報取得が制限されることがある.

■そこで,PubMedのサイトにアクセスするのではなく,API経由で情報を取得するようにすればこのようなトラブルを回避することができる.以下では,API経由でPubMed検索結果を取得するGPT「PubMed Searcher」を筆者が作ったので紹介する

1.GPT「PubMed Searcher」の仕組み

■ChatGPTの有料ユーザー(Plus会員:月$20のサブスクリプション)は,自分専用のbotであるGPTを作成することができる.このGPTでPubMed Searcherを作成する(個別にAPIキーが必要となるため,他者には公開せず自分のみの使用となる).また,PubMedはAPIを無料公開している(厳密にはNCBIが提供するEntrezのAPIのデータベースを選択するパラメータとしてPubMedを指定できる).APIはApplication Programming Interfaceの略で,ソフトウェア同士が通信するためのインターフェースであり,いわゆる「情報をやりとりするための鍵」である.このAPIを用いてPubMedのデータベースにChatGPTが直接アクセスして論文情報を引っ張ってくることができる.

■PubMedのAPIはNCBIにアカウントを作成した上で,自分だけのAPIキーを入手する必要がある.つまり,このGPTを作成しても他人が使用することは避けなければならず,自分だけが使用するものである.このため,作成したPubMed SearcherがGPT storeに置かれているわけではなく,各自で作成しなければならない.といっても,筆者が作成した以下の手順通りやれば作成できるので,さほど難しくはなく,スマホからも作成可能である.

2.GPT「PubMed Searcher」を作成する手順

(1)ncbiのアカウントを作成する
■まず,以下のURLにアクセスし,ncbiのアカウントを作成する.
https://www.ncbi.nlm.nih.gov/account/
(2)APIキーを取得する
■アカウントを取得したら,以下のアカウント設定ページにアクセスし,一番下にあるAPI Key ManagementにあるAPIキーを取得する.このAPIキーは自分だけのものなので他人に公開しないこと.
https://www.ncbi.nlm.nih.gov/account/settings/
(3)GPTを作成する
■ウェブ版のChatGPTにアクセスし,左側のバーから「GPTを探す(GPT explore)」をクリックし,右上の「+作成する」をクリックするとGPT builderが立ち上がる.一番上のバーで真ん中の「構成」を選択し,以下のように設定する.

アイコン画像:好きな画像を設定できる.DALL-E3に頼んで画像生成してもらうことも可能
名前:好きな名前に設定する(例:PubMed Researcher)
説明:GPTを開いた時に表示される短い説明文.好きな説明文を入れる(例:PubMedでの網羅的検索を目的としたGPTです)
指示:以下をコピペする(構造化された情報を提供する必要がある部分について,精度を高めるためにYAMLを使用した指示となっている).
このGPTはPubMedから文献情報を検索することでユーザーを支援します。ユーザーが提供する特定のクエリを使ってPubMedを検索し、関連する論文情報を返すことができなければなりません。GPTはPubMedデータへのアクセスにNCBIのアカウント詳細とAPIキーを活用してください。

Clinical Questionへの対応:
```yaml
clinical_question:
  steps:
    - Extract as many all relevant terms (synonym or quasi-synonym) as possible from the Clinical Question provided by the user.
    - Create a PubMed search query using these terms, enclosed in double quotes.
    - Ensure the search query is highly sensitive but not highly specific.
    - Ask the user for confirmation before performing the search.

search_results:
  steps:
    - Indicate the number of results found.
    - If ESearch results exceed 3, do not display article details in the response.
    - Use ESummary to compile all results into an Excel file.
    - Include all articles in the Excel file without setting a limit on the number of articles.

excel_file:
  columns:
    - PMID
    - URL: Create a hyperlink to the article's PubMed page in the format https://pubmed.ncbi.nlm.nih.gov/PMID/
    - Title

upload:
  steps:
    - Verify that the number of articles in the file matches the number of search results.
    - Ensure each article includes all required information.
    - Redo the process if any information is missing.

efetch:
  usage: Use EFetch only when abstract information is needed.
・会話の開始者:特に設定は不要
・知識:特に設定は不要
・機能:「ウェブ参照」と「コードインタープリター」にチェックを入れる
・アクション:「新しいアクションを作成する」をクリックし,「スキーマ」に以下をコピペする
openapi: 3.0.0
info:
  title: PubMed API
  description: API to search and retrieve literature from PubMed using esearch, esummary, and efetch endpoints.
  version: 1.0.0
servers:
  - url: https://eutils.ncbi.nlm.nih.gov/entrez/eutils
    description: NCBI E-utilities server
paths:
  /esearch.fcgi:
    get:
      operationId: searchLiterature
      summary: Searches for literature in PubMed.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: term
          in: query
          required: true
          schema:
            type: string
          description: The search term(s).
        - name: retmax
          in: query
          required: false
          schema:
            type: integer
          description: The maximum number of results to return.
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, json).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Search results
        content:
          application/json:
            schema:
              type: object
              properties:
                count:
                  type: integer
                retmax:
                  type: integer
                retstart:
                  type: integer
                ids:
                  type: array
                  items:
                    type: string
  /esummary.fcgi:
    get:
      operationId: getSummary
      summary: Retrieves the summary of literature based on search results.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: id
          in: query
          required: true
          schema:
            type: string
          description: A comma-separated list of UIDs of the articles.
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, json).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Summary details of the search results
        content:
          application/json:
            schema:
              type: object
              properties:
                uid:
                  type: string
                title:
                  type: string
                source:
                  type: string
                pubdate:
                  type: string
                authors:
                  type: array
                  items:
                    type: string
                volume:
                  type: string
                issue:
                  type: string
                pages:
                  type: string
                doi:
                  type: string
  /efetch.fcgi:
    get:
      operationId: fetchDetails
      summary: Fetches the details including abstracts for specified UIDs.
      parameters:
        - name: db
          in: query
          required: true
          schema:
            type: string
          description: The database to search (e.g., pubmed).
        - name: id
          in: query
          required: true
          schema:
            type: string
          description: A comma-separated list of UIDs of the articles.
        - name: rettype
          in: query
          required: false
          schema:
            type: string
          description: The return type (e.g., abstract).
        - name: retmode
          in: query
          required: false
          schema:
            type: string
          description: The return mode (e.g., xml, text).
        - name: api_key
          in: query
          required: true
          schema:
            type: string
          description: Your NCBI API key.
    responses:
      '200':
        description: Detailed information including abstracts
        content:
          text/plain:
            schema:
              type: string
・コピペしたスキーマには「Your NCBI API Key.」と書かれている部分(上のボックス内で赤字で示している部分)が3か所あるので,その部分を取得したAPIキーに置き換える
追加設定:設定は不要
・右上の「更新する」を押す.公開範囲は「自分のみ」とする.

3.GPT「PubMed Researcher」でできること

■このGPTでは上記のベースの指示により以下のことが可能である.

(1)Clinical Questionに応じたPubMed検索式の生成
Clinical Question(その他の質問でもよいが)を質問すると,その質問に応じて網羅的なPubMed検索式を生成する.網羅的検索ができるように設定しているため,各用語についてできるだけ多くの同義語を検索式に加えるようにしており,感度が高く,特異度が低い検索式となっている.回答の最後に「この検索式でPubMed検索していいか?」と聞かれるので,修正が必要であればそこで修正内容を伝える.
【AI】ChatGPTとAPIを使って網羅的なPubMed検索できるGPT「PubMed Searcher」_e0255123_12375758.png
(2)ESearchを用いた検索
■PubMed検索を指示すると,GPTはまずAPIキーを使ってESearchで検索結果としてヒットした論文のPMIDを取得する.これにより論文のヒット数とPMIDが入手される.この際,「〇件の論文がヒットした」と回答される.このPMIDをもとに,各論文のより詳しい内容をESummaryやEFetchで取得することができる.
【AI】ChatGPTとAPIを使って網羅的なPubMed検索できるGPT「PubMed Searcher」_e0255123_12382730.png
(3)ESummaryを用いた論文情報取得
■ESummaryは論文タイトル,論文が掲載されているジャーナル・年・巻号・頁の情報を取得できる.このESummaryを使って,(2)でESearchから得た論文のPMIDから論文情報を取得する.ただし,網羅的検索ではかなりの論文数がヒットされる可能性があるため,GPTの回答出力の限界もあることから,論文数が4件以上の場合はAdvanced Data Analysis(旧Code Interpreter)を使って自動的にExcelファイルにまとめるよう設定されている(この件数を変更したい場合は,GPT編集で指示を変更する).Excelファイルに提示される情報は,PMID,PubMedでのその論文Abstractへのリンク,論文タイトルの3つである(ジャーナル名等まで入れると処理しきれずタイムアウトしてしまう).また,ChatGPTの処理の限界から,取得できる論文情報は多くとも200件程度までと考えた方がよい.これ以下に論文数をおさえるなら検索式の特異度を高める必要がある.
【AI】ChatGPTとAPIを使って網羅的なPubMed検索できるGPT「PubMed Searcher」_e0255123_12385102.png
■応用として,GPTに指示して,このExcelファイルから自分の目的にあった論文タイトルの論文だけを抽出して再度ファイル化してもらうことも可能である(ただし,ChatGPTは「選択」というタスクが苦手であり,その抽出精度は感度が高く特異度が低めである).

(4)EFetchを用いた論文Abstractの取得
■EFetchは論文Abstractやdoiも含めたより詳細な論文の情報を取得することができる.これにより,ダイレクトにAbstractの内容をGPTに解説してもらったりすることも可能である.
【AI】ChatGPTとAPIを使って網羅的なPubMed検索できるGPT「PubMed Searcher」_e0255123_12430125.png

# by DrMagicianEARL | 2024-05-18 12:44 | 医学・医療とAI
【AI】GoogleのAIであるGemini Advancedに高性能のGemini-1.5Proが搭載_e0255123_17073861.png
■2024年2月8日にリリースされた,Google最強のAIであるGeminiがBardと入れ替わる形で利用可能となったが,機能が不完全で,他のGoogleアプリとの連携も未完成であったこと,その後3月4日にClaude-3がリリースされたことから,Geminiを使用する人は大幅に減ったと思われる.だが,今回,Googleは大規模なアップデートを5月15日にGoogle I/O 2024で発表した.OpenAIが意図的に狙ったのかは不明だが,GPT-4oのリリースを同じ日にかぶせてきたため,Googleの発表は霞んでしまったものの,アップデート内容は必見である.何より,Googleは多数のアプリケーションを有しており,Geminiでこれらとの連携が可能になるのは大きい.

1.4月9日に開放されたGemini-1.5Pro

■Geminiには,ハイスペックで,最大で1時間の動画や70万語のテキストを扱える次世代モデル「Gemini-1.5Pro」が存在したが,一部のユーザーしか使用できない限定テストの状態であった.4月9日になってAPI経由であれば誰でも使用できるようになった(逆にWeb版やアプリではまだ利用できなかった).音声を理解する機能(音声翻訳機能はOpenAIによるテストでGPT-4oと同等レベル)やファイルを処理しやすくするAPIが搭載され,さらに開発者がモデルの出力をより詳細に制御できるようにするシステム命令やJSONモードなども搭載された.そして5月15日のアップデートではこのGemini-1.5ProがWeb版およびアプリのGemini Advancedで利用できるようになった.

■Gemini-1.5Proは,GPT-4が用いているTransformerだけでなく,Mixture-of-Expertも取り入れており,入力に応じて最も関連性の高いエキスパートのニューラルネットワークのみを選択的に活性化させることでモデルの効率性が大幅に向上した.

2.5月15日のGemini Advancedのアップデート内容

(1)Gemini-1.5ProをGemini Advancedに導入
■Gemini-1.5ProがGemini Advancedに導入されたことで,ようやくWeb版やアプリでも使用が可能になった(これによりGemini-1.0Ultraは廃止).Gemini Advancedは有料プランであり,Googleが提供するストレージ(容量)を増やす有料サービスGoogle One(https://one.google.com/about?hl=ja)にアクセスして,AI Premiumプランに登録することで利用可能となる.
【AI】GoogleのAIであるGemini Advancedに高性能のGemini-1.5Proが搭載_e0255123_17164292.png
■料金は月額$20(2900円)であり,GPT-4が利用できるChatGPT Plus会員とほぼ同額であるが,Gemini Advanced利用を含めたGoogle Oneのサービス(クラウドサービスGoogle drive,メールサービスGmail,画像保存サービスGoogle Photoなど)を保存容量を2TBまで大幅に増やして利用できるようになる他,利用者専用の特典を受けられるため,ChatGPT Plusよりお得といえる.また,最初の2ヵ月間は試用期間として無料で利用できる.

(2)日本語対応が可能となった
■Gemini Advancedでは,最もハイスペックなGemini-1.0Ultraが使用できたが,必ずしもUltraで回答されるわけではなく,無料のGemini Proとの違いが分からない,GPT-4より見劣りする,といった声が聞かれていた.これはGemini-1.0Ultraが日本語対応していないかったため,Googleアカウントの言語設定を英語に設定した上で英語で質問する必要があったからである.このため,日本人には使いづらいものであったが,今回のアップデートではGemini-1.0UltraからGemini-1.5Proに変更されて日本語対応も可能となったことから,以前よりも日本語でのチャット性能が向上している.

(3)コンテキストウィンドウ強化
■機械学習の向上によりコンテキストウィンドウで最大100万トークンもの膨大な情報を処理可能になっている.GPT-4oが12万8000トークンであることを考えるとGemini-1.5Proは圧倒的な処理量で,これはハリーポッターの全書籍の8割の量に相当する.これによりこれまでよりも複雑な問題を解決できるようになり,情報の探索と分析の時間が節約され,生産性の向上が期待される.また,約100通の電子メールを要約することが可能である.

■なお,Google AI StudioかVertex AIのwaiting listに登録する必要があるが,コンテキストウィンドウをさらに倍の200万トークンに増やすことも可能である.

(4)Googleが提供している他のサービスとの連携
プロンプトに「@」マークを入力すると,連携できる機能が選択できるBoxが現れ,Googleの他のサービス機能を呼び出せる.連携できるのはGmail,Googleドキュメント,Googleドライブ,Googleフライト,Googleホテル,Googleマップ,YouTubeである.
【AI】GoogleのAIであるGemini Advancedに高性能のGemini-1.5Proが搭載_e0255123_17133471.png
(5)ファイルアップロードが可能に
■前述の連携機能でのGoogleドライブまたはデバイスから複数のGoogleドキュメント,PDFファイル,Wordファイルをシームレスにアップロードすることが可能となった.

(6)画像認識
■以前からGeminiでは画像認識が可能であったが,Gemini-1.5ProではGPT-4oと遜色ないレベルの画像認識機能にまで向上している

(7)動画解析
■動画解析機能は全AIの中で最も優れており,GPT-4oでは困難な長い動画の解析も可能である.

(6)数カ月以内にGemini Live搭載へ
■今回のアップデートでは未搭載であるが,Gemini Advancedユーザー向けの音声会話機能「Gemini Live」が数ヵ月以内に公開されるとのことである.また,2024年後半にはGemini Live使用時にカメラを利用できるようにする予定とのことである.

3.アプリについて

■Geminiは5月からGoogleアプリで使用することができるようになった.Googleアプリを開いて,一番上の検索の横にある星マークをタップするとGeminiに切り替わる.
iOS版(App Store)
https://apps.apple.com/jp/app/google-アプリ/id284815942
アンドロイド版(Google Play)
https://play.google.com/store/apps/details?id=com.google.android.googlequicksearchbox&hl=ja&gl=US

# by DrMagicianEARL | 2024-05-16 17:39 | 医学・医療とAI
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17311453.jpeg
■2024年5月14日にOpenAI社からGPT-4o(oはomni「全て」の略)がリリースされた.この日はGoogleが大規模アップデートを発表する日でもあったが,GPT-4oのその性能と無料開放されたことから完全に霞んでしまったようである(Googleアップデートもかなりのものなので後日別の記事でまとめる).OpenAIは1ヵ月前にGPT-4-turbo-2024-04-09をリリースしてかなり精度アップしていたが,今回はそれを大きく上回るマルチモーダルな大幅アップデートである.
Hello, GPT-4o. OpenAI 2024 May 13
https://openai.com/index/hello-gpt-4o/

■実は,このGPT-4oは事前公開されていた.多数のAIチャットボットを比較できるChatBot Arenaに,4月30日に突然GPT2-chatbotなるものが1日だけ出現し,GPT-4を上回る高性能であったことからGPT-5かと噂になっていた.そして1週間後の5月6日に派生版であるim-a-good-gpt2-chatbotとim-also-a-good-gpt2-chatbotの2つのモデルが登録され,偶然エラーメッセージでOpenAIのAPIに関連していることが発覚した.GPT-4oがリリースされた後,OpenAI社CEOのSam Altomanが,GPT2-chatbotはGPT-4oだったことを認めている.

1.GPT-4o無料開放とその使い方と制限

■ChatGPTのGPT-4は有料ユーザー(Plus会員:月$20≒3000円のサブスクリプション)しか使用できなかったが,GPT-4oは制限つきながら無料ユーザーにも開放された(全員に一度に開放できてはおらず,何日かかけて順次GPT-4oが選択できるようになる).ChatGPT-3.5よりも圧倒的に性能がいいため,ぜひ利用してみてほしい.

■無料ユーザーはチャット可能回数が有料ユーザーよりも少ない.1回のセッションで最大40回までで,制限に達した場合はChatGPT-3.5に自動的に切り替わる(有料ユーザーは無料ユーザーの5倍の200回使用できる).ただし,この制限は3時間ごとにリセットされるため,無料ユーザーでもよほど高頻度の使い方をしない限りは制限にはまずひっかからないと思われる.

■以下の機能は無料ユーザーは使用できない.特に今回のアップデートでの目玉であるリアルタイム翻訳を使用したいのであれば有料ユーザーになることをおすすめする.
画像生成機能:DALL-E3による画像生成機能の使用はできない
GPTsの作成:GPTsを使用することはできるが,自分で作成することはできない
音声会話機能:アプリでのGPT-4oによる音声会話機能は利用できない

2.GPT-4oの性能

■GPT-4oは,これまでChatGPTで一番よく使用されているテキストベースの会話はもちろんのこと,音声,画像認識能力も含めたマルチモーダル機能が大幅に強化された.モデル評価としてはELOスコアは他のAIモデルをはるかに凌駕する1310点を獲得している.
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17315343.jpg
(1)テキストベース

■まず目につくのは回答速度であり,ChatGPT-3.5と比較しても遜色のない速度になっている.回答精度も向上している.また,多言語に対応する能力が向上し,日本語はより流暢になっている.さらに,トークナイザーが圧縮され,日本語テキストは1.4分の1に圧縮され,より長い入力・出力が可能となった.

■テキスト評価のベンチマークでは,MMLU,GPQA,MATH,HUMANEval,MGSM,DROPの6項目で評価され,DROPこそClaude-3-Opusに勝てなかったものの,それ以外はすべてトップであった.注意点として,ベンチマークには様々な種類があり,必ずしもこの結果が絶対的な指標ではないことである.実際,GPT-4oのコード生成能力は,HUMANEvalでは最高評価だが,実際の使用感ではかなり間違いが多く,コード生成にはとても使えないという声が多い.
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17321599.png
MMLU:幅広いタスクにわたる言語理解能力を評価するためのベンチマーク
GPQA:一般的な質問応答能力を評価するためのベンチマーク
MATH:数学的な問題解決能力を評価するためのベンチマーク
HUMANEval:コード生成能力を評価するためのベンチマーク
MGSM:モデルの生成能力を多面的に評価するためのベンチマーク
DROP:段落にわたる離散的な推論能力を評価するためのベンチマーク
(2)音声認識
■音声入力(ChatGPTアプリで使用可能)は,アップデート前はChatGPT-3.5で平均2.8秒,ChatGPT-4で5.4秒の) の遅延があったが,GPT-4oではわずか0.232秒で応答でき,平均では0.320秒で,人間の応答時間とほぼ同じである.アップデート前のWhisper-v3は,「音声認識→テキスト変換→テキスト処理→音声変換」のプロセスがあったため遅延していたが,GPT-4oではテキストも音声も1つのモデルで処理するため,すべての入力と出力が同じニューラルネットワークによって処理されており,自然な対話が可能になっている.その結果リアルタイム翻訳が可能となり,その動画はSNSで多数拡散されて話題になっている(あまりのインパクトで世界中の人がリアルタイム翻訳機能を試したため,現在は過負荷でアクセスが困難になっている).
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17330258.png
(3)音声翻訳パフォーマンス
■音声翻訳パフォーマンスはアップデート前のWhisper-v3から各段に性能が向上し,それまでトップに君臨していたGeminiに匹敵するレベルである.これに加えて前述の高速な対話速度からリアルタイム翻訳が可能となり,画期的なものとなっている.ちなみに,このGPT-4oのリリースにより,言語学習・翻訳ツールなどを提供しているDuolingoなどの企業の株価が暴落している.
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17350162.png
(4)視覚機能パフォーマンス
■視覚機能(Vision機能)も大幅に向上し,M3Exam ベンチマークは、多言語と視覚の両方の評価のベンチマークであるM3Examでは全ての言語でGPT-4を上回った.視覚認識ベンチマークでは,他の全てのAIを上回るパフォーマンスであった.例えば食べ物の写真を撮ってアップロードし,レシピやカロリー計算までできたり,これまでほとんどできなかった漫画も認識して解説できるようになっている.画像内の文字や医療系画像の認識精度も向上している.
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17355434.png
【AI】無料で利用可能な革新的性能のAIモデル「GPT-4o」がリリース_e0255123_17373493.png
(5)APIのコストパフォーマンス向上
■GPT-4oのAPIは,GPT-4-turboの速さの2倍で,価格は半分,レート制限は5倍に増加している.

(6)GPTsのGPT-4o化
■GPT-4oリリース時点ではGPTsのベースのモデルはGPT-4のままである.ただし,OpenAIは今後数週間でGPTsをGPT-4oに切り替えるとのことである.

3.GPT-4oの弱点

■SNSではGPT-4oは高性能と話題で,優秀だというポストばかりが目につくが,最高性能とは限らない.各AIには得意不得意があり,GPT-4oとて例外ではない.1年前はChatGPTの独壇場であったが,現在は競合他社からも優秀なAIがリリースされており,用途に応じて最適なAIを使い分けていくのがベストと思われる.

(1)ウェブアクセスはいまだに苦手
■ウェブアクセスして情報を得る場合,依然としてGPT-4oはハルシネーションが多い.このあたりはGemini-1.5Proの方が断然上である.用いている検索エンジンもBingで,やはりGeminiが使うGoogle検索には劣る.PerplexityでGPT-4oを使うと精度は上がるが,同じPerplexityならSonar Large 32K(Llama3ベース)を選択した方が精度は上である.

(2)論文要約能力は微妙
本ブログを読まれる方は医学論文PDFを読み込ませて解説させたりデータを抜粋させたりする用途でAI使うことも多いだろう.GPT-4oでは読み込めるPDF容量が増えたので,だいたいの医学論文は読み込んで高速で回答できるようにはなったが,論文内容全体を圧縮することはできても,重要ポイントを把握して要約する性能に関してはClaude-3やCommand-R plusの方がだいぶ上である.

(3)コードを書くのが下手
■ベンチマークではコード生成能力は高いとの評価であったが,実際の使用感ではプログラマー達から酷評されている.マルチモーダル化の代償が何かあったのかもしれない.

(4)長い動画要約は不可
■動画を読み込ませての要約機能はGemini-1.5Proの方が圧倒的に性能が上である.動画が長いほどGPT-4oはうまく要約できない.

■以下は私の個人的な意見ではあるが,各タスクでのおすすめAIである.
一般知識質問→GPT-4o
論証→GPT-4oまたはClaude-3
画像認識→GPT-4o
音声対話→GPT-4o
動画要約→Gemini-1.5Pro
翻訳→GPT-4o
PDF要約→Claude-3
ウェブアクセス→Gemini-1.5ProまたはPerplexity Sonar Large 32K
論文検索→PerplexityまたはGPT×Consensus
コード作成→Claude-3またはGPT-4-turbo
小説作成→Command-R plusまたはLlama-3

4.アプリダウンロードの際の注意
■GPT-4oのリリースで,ChatGPTのアプリを利用する方も多いが,ChatGPTを名乗る非公式アプリが多数存在するため,間違えてダウンロードしないよう注意が必要である
iOS版(App Store)
https://apps.apple.com/jp/app/chatgpt/id6448311069
アンドロイド版(Google Play)
https://play.google.com/store/apps/details?id=com.openai.chatgpt&hl=en_US&pli=1

# by DrMagicianEARL | 2024-05-15 17:41 | 医学・医療とAI

by DrMagicianEARL