Учим LM Studio ходить в интернет при ответах на вопросы

от автора

Мне очень нравится LM Studio, так как она позволяет локально запускать ИИ модели. Что позволяет сохранить приватность того о чем ты беседуешь с ИИ. Но по сравнению с коммерческими онлайн моделями, LM Studio не умеет ходить в интернет «из коробки». Те модели не могут использовать актуальную информацию из Интернета для ответов на вопросы.

Не так давно в LM Studio было добавлено возможность подключать MCP-сервера к моделям. Самое первое, что я сделал это, написал небольшой MCP-сервер, который позволяет извлекать текст из URL-адреса. Также может извлекать ссылки, которые есть на странице. Это дает возможность в запросе к ИИ указать адрес и попросить извлечь текст оттуда или ссылки, что бы использовать при ответе.

Что бы это все работало, для начала создаем pyproject.toml в папке mcp-server.

[build-system] requires = ["setuptools>=42", "wheel"] build-backend = "setuptools.build_meta"  [project] name = "url-text-fetcher" version = "0.1.0" description = "FastMCP server for URL text fetching" authors = [{ name="Evgeny Igumnov", email="igumnovnsk@gmail.com" }] dependencies = [   "fastmcp",   "requests",   "beautifulsoup4", ] [project.scripts] url-text-fetcher = "url_text_fetcher.mcp_server:main"

Потом создаем файл mcp_server.py в папке mcp-server/url_text_fetcher.

from mcp.server.fastmcp import FastMCP import requests from bs4 import BeautifulSoup from typing import List  # for type hints  mcp = FastMCP("URL Text Fetcher")  @mcp.tool() def fetch_url_text(url: str) -> str:     """Download the text from a URL."""     resp = requests.get(url, timeout=10)     resp.raise_for_status()     soup = BeautifulSoup(resp.text, "html.parser")     return soup.get_text(separator="\n", strip=True)  @mcp.tool() def fetch_page_links(url: str) -> List[str]:     """Return a list of all URLs found on the given page."""     resp = requests.get(url, timeout=10)     resp.raise_for_status()     soup = BeautifulSoup(resp.text, "html.parser")     # Extract all href attributes from <a> tags     links = [a['href'] for a in soup.find_all('a', href=True)]     return links  def main():     mcp.run()  if __name__ == "__main__":     main()  

Далее создаем пустой __init.py__ в папке mcp-server/url_text_fetcher.

И наконец что бы MCP-сервер работал, нужно установить его:

pip install -e .

Внизу окна с чатом в LM Studio, где пользователь вводит вопрос, можно выбрать MCP-сервер через «Integrations». Кликнув «Install» и «Edit mcp.json». В этом файле можно добавить свой MCP-сервер.

{   "mcpServers": {     "url-text-fetcher": {       "command": "python",       "args": [         "-m",         "url_text_fetcher.mcp_server"       ]     }   } }

Второе, что я сделал это, подключил уже готовый MCP-сервер от поисковой системы Brave. Который позволяет в запросе к ИИ указывать что поищи информацию в интернете для ответа на вопрос. Для этого сначала проверьте установлен ли у вас npx. И установите @modelcontextprotocol/server-brave-search:

npm i -D @modelcontextprotocol/server-brave-search

Вот как его можно подключить в файле mcp.json:

{   "mcpServers": {     "brave-search": {       "command": "npx",       "args": [         "-y",         "@modelcontextprotocol/server-brave-search"       ],       "env": {         "BRAVE_API_KEY": ".................."       }     },     "url-text-fetcher": {       "command": "python",       "args": [         "-m",         "url_text_fetcher.mcp_server"       ]     }   } }

Ключ BRAVE_API_KEY можно получить бесплатно с небольшими ограничениями до 2000 запросов в месяц и не более 1 запроса в секунду.

В итоге внизу окна с чатом в LM Studio, где пользователь вводит вопрос, можно выбрать MCP-сервер через «Integrations» и там должны появиться два MCP-сервера: «mcp/url-text-fetcher» и «mcp/brave-search».


ссылка на оригинал статьи https://habr.com/ru/articles/933608/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *