時価総額: $2.6906T 0.59%
ボリューム(24時間): $84.6845B 15.37%
  • 時価総額: $2.6906T 0.59%
  • ボリューム(24時間): $84.6845B 15.37%
  • 恐怖と貪欲の指数:
  • 時価総額: $2.6906T 0.59%
暗号
トピック
暗号化
ニュース
暗号造園
動画
トップニュース
暗号
トピック
暗号化
ニュース
暗号造園
動画
bitcoin
bitcoin

$79248.069182 USD

1.09%

ethereum
ethereum

$2511.064695 USD

1.53%

tether
tether

$0.999850 USD

0.01%

bnb
bnb

$756.247700 USD

0.89%

xrp
xrp

$1.438158 USD

3.79%

usd-coin
usd-coin

$0.999958 USD

0.01%

solana
solana

$104.884928 USD

2.06%

tron
tron

$0.339008 USD

0.51%

hyperliquid
hyperliquid

$86.722420 USD

3.32%

zcash
zcash

$1235.386194 USD

9.84%

dogecoin
dogecoin

$0.090749 USD

1.59%

monero
monero

$503.916600 USD

-2.09%

chainlink
chainlink

$12.600233 USD

-0.32%

unus-sed-leo
unus-sed-leo

$9.181565 USD

-0.39%

cardano
cardano

$0.221251 USD

2.14%

暗号通貨のニュース記事

モデルコンテキストプロトコルでコンテキストを効果的に管理します

2025/04/28 14:32

このチュートリアルでは、ModelContextManagerを構築することにより、モデルコンテキストプロトコル(MCP)の実用的な実装をご案内します

モデルコンテキストプロトコルでコンテキストを効果的に管理します

```python

`` python

import torch

トーチをインポートします

import numpy as np

npとしてnumpyをインポートします

import typing

インポートタイピング

from dataclasses import dataclass

DataClassesからImport Dataclassから

import time

インポート時間

import gc

GCをインポートします

from tqdm.notebook import tqdm

tqdm.notebookからインポートtqdmから

from sentence_transformers import SentenceTransformer

SentenceTransFormerをImportからexcentから

from transformers import GPT2Tokenizer, FLAN_T5ForConditionalGeneration, AutoTokenizer, AutoModelForSeq2SeqLM

トランスから輸入gpt2tokenizer、flan_t5forconditionalgeneration、autotokenizer、automodelforseq2seqlm

import math

数学をインポートします

MAX_TOKENS = 8000

max_tokens = 8000

DEVICE = 'cuda' if torch.cuda.is_available() else 'cpu'

device = 'cuda' if torch.cuda.is_available()else 'cpu'

NUM_CHUNKS = 50

num_chunks = 50

CHUNK_SIZE = 100

chunk_size = 100

RELEVANCE_THRESHOLD = 0.1

revervance_threshold = 0.1

IMPORTANCE_FACTOR = 1.0

compettion_factor = 1.0

RECENCY_FACTOR = 0.5

Remency_Factor = 0.5

VISUALIZE_CONTEXT = True

visualize_context = true

BATCH_SIZE = 32

batch_size = 32

class ContextChunk(typing.NamedTuple):

クラスコンテキストチャンク(typing.namedtuple):

content: str

コンテンツ:str

embedding: np.array

埋め込み:np.array

importance: float = 1.0

重要性:float = 1.0

timestamp: float = time.time()

タイムスタンプ:float = time.time()

metadata: dict = None

メタデータ:dict = none

def __post_init__(self):

def __post_init __(self):

if self.metadata is None:

self.metadataがいない場合:

self.metadata = {}

self.metadata = {}

class ModelContextManager:

クラスModelContextManager:

def __init__(self, context_chunks:typing.List[ContextChunk]=None, max_tokens:int=MAX_TOKENS, token_limit:int=0, gpt2_tokenizer:GPT2Tokenizer=None):

def __ init __(self、context_chunks:typing.list [contextchunk] = none、max_tokens:int = max_tokens、token_limit:int = 0、gpt2tokenizer:gpt2tokenizer = none):

self.max_tokens = max_tokens

self.max_tokens = max_tokens

self.token_limit = token_limit

self.token_limit = token_limit

self.context_chunks = context_chunks or []

self.context_chunks = context_chunksまたは[]

self.used_tokens = 0

self.used_tokens = 0

self.last_chunk_index = 0

self.last_chunk_index = 0

self.total_chunks = 0

self.total_chunks = 0

if gpt2_tokenizer is None:

GPT2_TOKENIZERがなしである場合:

self.gpt2_tokenizer = GPT2Tokenizer.from_pretrained("gpt2")

self.gpt2_tokenizer = gpt2tokenizer.from_pretrained( "gpt2")

else:

それ以外:

self.gpt2_tokenizer = gpt2_tokenizer

self.gpt2_tokenizer = gpt2_tokenizer

self.sentence_transformer = SentenceTransformer('all-mpnet-base-v2')

self.sentence_transformer = senecetransformer( 'all-mpnet-base-v2')

def add_chunk(self, chunk_text:str, importance:float=1.0):

def add_chunk(self、chunk_text:str、compation:float = 1.0):

encoded_input = self.gpt2_tokenizer(chunk_text, return_tensors='pt')

encoded_input = self.gpt2_tokenizer(chunk_text、return_tensors = 'pt')

self.used_tokens += int(encoded_input[0].shape[1])

self.used_tokens += int(encoded_input [0] .shape [1])

chunk_embedding = self.sentence_transformer.encode(chunk_text, batch_size=BATCH_SIZE)

chunk_embeding = self.sentence_transformer.encode(chunk_text、batch_size = batch_size)

new_chunk = ContextChunk(content=chunk_text, embedding=chunk_embedding, importance=importance)

new_chunk = contextchunk(content = chunk_text、embedding = chunk_embedding、compation = compation)

self.context_chunks.append(new_chunk)

self.context_chunks.append(new_chunk)

self.last_chunk_index += 1

self.last_chunk_index += 1

self.total_chunks += 1

self.total_chunks += 1

print(f"Added chunk with {int(encoded_input[0].shape[1])} tokens and importance {importance}. Total used tokens: {self.used_tokens}, total chunks: {self.total_chunks}")

print(f "{int(encoded_input [0] .shape [1])} tokens and compation {compettion}。

def optimize_context_window(self, query:str, min_chunks:int=3):

def optimize_context_window(self、query:str、min_chunks:int = 3):

if len(self.context_chunks) <= min_chunks:

len(self.context_chunks)<= min_chunks:

return []

戻る []

query_embedding = self.sentence_transformer.encode(query, batch_size=BATCH_SIZE)

query_embeding = self.sentence_transformer.encode(query、batch_size = batch_size)

chunks_to_keep = []

chunks_to_keep = []

remaining_tokens = self.max_tokens - self.used_tokens

resight_tokens = self.max_tokens -self.used_tokens

if remaining_tokens < 0:

rester_tokens <0の場合:

print("Warning: token limit exceeded by %s tokens" % -remaining_tokens)

print( "警告:トークン制限は%sトークンを超えて"%-remaining_tokens)

for i in range(min_chunks, len(self.context_chunks) - 1, -1):

範囲のi(min_chunks、len(self.context_chunks)-1、-1):

chunk = self.context_chunks[i]

chunk = self.context_chunks [i]

if i == len(self.context_chunks) - 1:

i == len(self.context_chunks)-1:

chunks_to_keep.append(i)

chunks_to_keep.append(i)

continue

続く

chunk_importance = chunk.importance * IMPORTANCE_FACTOR

chunk_importance = chunk.importance * custition_factor

chunk_recency = (time.time() - chunk.timestamp) * RECENCY_FACTOR

chunk_recency =(time.time() - chunk.timestamp) * Remency_Factor

relevant_scores = np.array([cosine_similarity(chunk.embedding, x) for x in query_embedding])

relevant_scores = np.array([cosine_similarity(chunk.embeding、x)for x in query_embeding])

max_relevant_score = np.max(relevant_scores)

MAX_RELEVANT_SCORE = np.max(relevant_scores)

total_score = chunk_importance + chunk_recency + max_relevant_score

Total_score = chunk_importance + chunk_recency + max_relevant_score

if total_score >= RELEVANCE_THRESHOLD:

Total_score> = relevance_threshold:

encoded_input = self.gpt2_tokenizer(chunk.content, return_tensors='pt')

encoded_input = self.gpt2_tokenizer(chunk.content、return_tensors = 'pt')

chunk_token_count = int(encoded_input[0].shape[1])

chunk_token_count = int(encoded_input [0] .shape [1])

if remaining_tokens >= chunk_token_count:

rester_tokens> = chunk_token_count:

chunks_to_keep.append(i)

chunks_to_keep.append(i)

remaining_

残り_

オリジナルソース:marktechpost

免責事項:info@kdj.com

提供される情報は取引に関するアドバイスではありません。 kdj.com は、この記事で提供される情報に基づいて行われた投資に対して一切の責任を負いません。暗号通貨は変動性が高いため、十分な調査を行った上で慎重に投資することを強くお勧めします。

このウェブサイトで使用されているコンテンツが著作権を侵害していると思われる場合は、直ちに当社 (info@kdj.com) までご連絡ください。速やかに削除させていただきます。

2026年09月09日 に掲載されたその他の記事