116 篇文章带有标签 “python”

create-mcp-server

MCP 服务器创建工具

PyPI License: MIT

创建无需构建配置的 模型上下文协议 (MCP) 服务器项目。

快速概览

# 使用 uvx (推荐)
uvx create-mcp-server

# 或者使用 pip
pip install create-mcp-server
create-mcp-server

您无需手动安装或配置任何依赖项。 该工具将设置创建 MCP 服务器所需的一切。

创建服务器

您需要在您的机器上安装 UV >= 0.4.10。

要创建新服务器,请运行以下任一命令:

使用 uvx (推荐)

uvx create-mcp-server

使用 pip

pip install create-mcp-server
create-mcp-server

它将引导您创建一个新的 MCP 服务器项目。 完成后,您将拥有一个具有以下结构的新目录:

my-server/
├── README.md
├── pyproject.toml
└── src/
    └── my_server/
        ├── __init__.py
        ├── __main__.py
        └── server.py

没有配置或复杂的文件夹结构,只有运行服务器所需的文件。

安装完成后,您可以启动服务器:

cd my-server
uv sync --dev --all-extras
uv run my-server

特性

  • 用于创建新项目的简单命令行界面
  • 在可用时自动配置 Claude Desktop 应用程序集成
  • 使用 uvx 实现快速、可靠的包管理和项目创建
  • 设置基本的 MCP 服务器结构
  • 使用 模型上下文协议 Python SDK 作为服务器项目

UV: An extremely fast Python package and project manager, written in Rust.

安装

On macOS and Linux

curl -LsSf https://astral.sh/uv/install.sh | sh

On Windows

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

更新

uv self update

一键同步环境

创建/同步完整的开发环境

uv sync

执行该命令后,主要做了以下事:

  1. 读取项目配置 pyproject.toml
  2. 创建/激活虚拟环境 .venv
  3. 安装所有依赖(含开发依赖)
  4. 以可编辑模式(-e / editable)安装当前项目
  5. 生成/锁定依赖版本 uv.lock

依赖包

安装

uv add "mcp[cli]"

移除

uv remove "mcp[cli]"

Python 项目

创建

uv init echo
cd echo

创建的文件:

.
├── .python-version
├── README.md
├── main.py
└── pyproject.toml

运行

uv run main.py
Hello from echo!

参考资料

MCP Python SDK

概述

Model Context Protocol 允许应用程序以标准化的方式为 LLM 提供上下文,将提供上下文的关注点与实际的 LLM 交互分离开来。这个 Python SDK 实现了完整的 MCP 规范,使您能够轻松地:

  • 构建可连接到任何 MCP 服务器的 MCP 客户端
  • 创建暴露资源、提示和工具的 MCP 服务器
  • 使用标准传输方式如 stdio 和 SSE
  • 处理所有 MCP 协议消息和生命周期事件

安装

将 MCP 添加到您的 Python 项目中

我们推荐使用 uv 来管理您的 Python 项目。在由 uv 管理的 Python 项目中,通过以下方式将 mcp 添加到依赖项:

uv add "mcp[cli]"

或者,对于使用 pip 管理依赖的项目:

pip install mcp

运行独立的 MCP 开发工具

要使用 uv 运行 mcp 命令:

uv run mcp

快速开始

让我们创建一个简单的 MCP 服务器,它暴露一个计算器工具和一些数据:

SWE-bench: Can Language Models Resolve Real-World GitHub Issues?

ABSTRACT(摘要)

Language models have outpaced our ability to evaluate them effectively, but for their future development it is essential to study the frontier of their capabilities. We find real-world software engineering to be a rich, sustainable, and challenging testbed for evaluating the next generation of language models. To this end, we introduce SWE-bench, an evaluation framework consisting of 2,294 software engineering problems drawn from real GitHub issues and corresponding pull requests across 12 popular Python repositories.

Claude API: Computer use

Computer use reference implementation(计算机使用参考实现)

Get started quickly with our computer use reference implementation that includes a web interface, Docker container, example tool implementations, and an agent loop.

快速开始使用我们的计算机使用参考实现,其中包括Web界面、Docker容器、示例工具实现和代理循环。

Here’s an example of how to provide computer use tools to Claude using the Messages API:

以下是如何使用消息API为Claude提供计算机使用工具的示例:

打包 Python 工程到 PyPI:构建 LLM 压测工具 evalscope-perf

创建 Python 工程 evalscope-perf

工程的目录结构

evalscope-perf/
├── evalscope_perf/
│   ├── __init__.py
│   └── main.py
├── README.md
├── LICENSE
├── pyproject.toml
└── setup.py

evalscope_perf/init.py

没有可以不写。

evalscope_perf/main.py import subprocess import re import typer import matplotlib.pyplot as plt from typing import List from typing_extensions import Annotated app = typer.

Qdrant

Qdrant

用于下一代人工智能应用的向量搜索引擎

Qdrant(读作:quadrant)是一个向量相似性搜索引擎和向量数据库。它提供了一个生产就绪的服务,具有方便的 API 来存储、搜索和管理点 - 具有附加有效载荷的向量。Qdrant 专为扩展的过滤支持量身定制。它对所有类型的神经网络或基于语义的匹配、分面搜索和其他应用非常有用。

解决方案

运行

Qdrant 镜像

docker pull qdrant/qdrant

启动 Qdrant 服务

docker run -p 6333:6333 -p 6334:6334 \
    -v $(pwd)/qdrant_storage:/qdrant/storage:z \
    qdrant/qdrant

Qdrant 现在可访问:

安装 Qdrant Client

pip install qdrant-client

代码示例

FastEmbed

FastEmbed

FastEmbed 是一个轻量级、快速的 Python 库,专为嵌入生成而构建。

安装

pip install -Uqq fastembed

支持的嵌入模型

import pandas as pd

from fastembed import TextEmbedding


supported_models = (
    pd.DataFrame(TextEmbedding.list_supported_models())
    .sort_values("size_in_GB")
    .drop(columns=["sources", "model_file", "additional_files"])
    .reset_index(drop=True)
)

print(supported_models)

AutoGen

AutoGen

定义 Agent

from autogen import ConversableAgent

llm_config = {"model": "gpt-3.5-turbo"}

agent = ConversableAgent(
    name="chatbot",
    llm_config=llm_config,
    human_input_mode="NEVER",
)

reply = agent.generate_reply(
    messages=[{"content": "给我讲个笑话。", "role": "user"}]
)
print(reply)

// ...
为什么八卦杂志最爱讲床上故事?因为上面都有新闻!哈哈哈~
为什么兔子喜欢吃胡萝卜?因为胡萝卜有好处,营养丰富!

多智能体对话

双人笑话

CrewAI 快速入门

CrewAI

安装

pip install 'crewai[tools]'

CrewAI 使用 Ollama 运行本地 LLM

.env

OPENAI_API_BASE=http://localhost:11434/v1
OPENAI_MODEL_NAME=aya:8b
OPENAI_API_KEY=NULL

agent.py

版本1

每次执行结果都不一样

from dotenv import load_dotenv
load_dotenv()

from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI


general_agent = Agent(
    role = "数学教授", 
    goal = """为提问数学问题的学生提供解决方案并给出答案。""", 
    backstory = """您是一位优秀的数学教授,喜欢以每个人都能理解的方式解决数学问题。""", 
    allow_delegation = False,
    verbose = True
)

// ...

版本2

稳定地生成结果

SWIFT: Scalable lightWeight Infrastructure for Fine-Tuning

简介

SWIFT 支持近200种LLM和MLLM(多模态大模型)的训练、推理、评测和部署。开发者可以直接将我们的框架应用到自己的Research和生产环境中,实现模型训练评测到应用的完整链路。我们除支持了PEFT提供的轻量训练方案外,也提供了一个完整的Adapters库以支持最新的训练技术,如NEFTune、LoRA+、LLaMA-PRO等,这个适配器库可以脱离训练脚本直接使用在自己的自定流程中。

安装

git clone https://github.com/modelscope/swift.git
cd swift
pip install -e '.[llm]'

支持的模型类型(model_type)

['chinese-alpaca-2-13b-16k', 'chinese-alpaca-2-13b', 'chinese-alpaca-2-7b-64k', 'chinese-alpaca-2-7b-16k', 'chinese-alpaca-2-7b', 'chinese-alpaca-2-1_3b', 'chinese-llama-2-13b-16k', 'chinese-llama-2-13b', 'ch

使用大型语言模型微调命名实体识别

目标

这里探索了借助大型语言模型微调进行命名实体识别的标注。

定义了一套电力领域的命名实体类型:

  • Province: 省份。例如:山东省。
  • City: 城市。例如:济南市、济南。
  • Company: 供电公司。例如:长清区供电公司、市中供电中心。
  • Substation: 供电所。例如:崮山供电所。
  • Indicator: 指标。例如:投诉、意见。
  • Date: 日期。例如:今天、昨天、今年、去年、本周、上周、本月、上月、3月、本季度、上季度、一季度、今年第一季度、2022年、2024年5月。

对用户的输入进行命名实体识别标注,输出的结果应该包含所有的电力领域实体类型的实例。

  • 山东省菏泽巨野县供电公司麒麟供电所投诉数量

<Province>山东省</Province><City>菏泽</City><Company>巨野县供电公司</Company><Substation>麒麟供电所</Substation><Indicator>投诉</Indicator>数量

  • 菏泽巨野县供电公司麒麟供电所投诉数量

<City>菏泽</City><Company>巨野县供电公司</Company><Substation>麒麟供电所</

Gradio DataFrame

Gradio DataFrame

import pandas as pd
import gradio as gr

def read_csv_from_text2sql(file_path="data/text2sql.csv"):
    try:
        df = pd.read_csv(file_path)
        return df
    except Exception as e:
        return pd.DataFrame([{"error": f"❌ {e}"}])

def selected_text2sql_dataframe(selected_index: gr.SelectData, df: gr.DataFrame):
    selected_row = df.iloc[selected_index.index[0]]
    text = selected_row.get('Text', '')
    sql = selected_row.get('SQL', '')
    return text, sql

with gr.Blocks() as demo:
    # UI
    upload_button = gr.UploadButton(label="上传 Text2SQL CSV 文件", 
                                    file_types = ['.csv'], 
                                    file_count = "single")
    df_text2sql = gr.Dataframe(headers=["Text", "SQL"], 
                                type="pandas", 
                                col_count=2, 
                                value=read_csv_from_text2sql,
                                interactive=False)
    with gr.Row():
        textbox_text = gr.Textbox(label="Text", lines=4)
        textbox_sql = gr.Textbox(label="SQL", lines=4)

    # Event
    upload_button.upload(fn=read_csv_from_text2sql, 
                            inputs=upload_button, 
                            outputs=df_text2sql)
    df_text2sql.select(fn=selected_text2sql_dataframe,
                        inputs=df_text2sql,
                        outputs=[textbox_text, textbox_sql])

demo.queue(api_open=False)
demo.launch(max_threads=30)

Gradio Chatbot

Gradio Chatbot

DashScope

import os
import pandas as pd
import gradio as gr
from http import HTTPStatus
from dashscope import Generation
from dashscope.api_entities.dashscope_response import Role
from typing import List, Optional, Tuple, Dict, Generator
from urllib.error import HTTPError


DEFAULT_SYSTEM = '您是一个有用的助手。'

History = List[Tuple[str, str]]
Messages = List[Dict[str, str]]

// ...

LangChain ChatTongyi

Anthropic Claude

Claude 3 模型

模型 模型名称 价格(MTok) 能力
Opus claude-3-opus-20240229 Input: 15<br>Output:15<br>Output:75 处理复杂的分析、多步骤的长期任务,以及更高阶的数学和编码任务
Sonnet claude-3-sonnet-20240229 Input: 3<br>Output:3<br>Output:15 适用于高效、高吞吐量的任务
Haiku claude-3-haiku-20240307 Input: 0.25<br>Output:0.25<br>Output:1.25 执行轻量级操作,速度领先行业
  • MTok = million tokens.(百万 Token)
  • 所有 Claude 3 模型都支持视觉和 200,000 个 Token 上下文窗口。

例子

LangChain

介绍

LangChain 是一个用于开发由大型语言模型(LLM)支持的应用程序的框架。

LangChain 简化了 LLM 应用程序生命周期的每个阶段:

  • 开发(Development):使用 LangChain 的开源构建块和组件构建您的应用程序。使用第三方集成和模板快速启动。
  • 生产化(Productionization):使用 LangSmith 检查、监控和评估您的链,以便您可以持续优化并放心部署。
  • 部署(Deployment):使用 LangServe 将任何链转换为 API。

具体来说,该框架由以下开源库组成:

  • langchain-core: 基本抽象和 LangChain 表达语言(LangChain Expression Language)。
  • langchain-community: 第三方集成。
    • 合作伙伴包(例如 langchain-openai、langchain-anthropic 等):一些集成已进一步拆分为自己的轻量级包,这些包仅依赖于 langchain-core。
  • langchain: 构成应用程序认知架构(Cognitive Architecture)的链(Chains)、代理(Agents)和检索策略(Retrieval Strategies)。
  • langgraph: 通过将步骤建模为图中的边和节点,使用 LLM 构建强大且有状态的多参与者应用程序。
  • langserve: 将 LangChain 链部署为 REST API。