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

$93799.023048 USD

-0.60%

ethereum
ethereum

$1777.401774 USD

-1.97%

tether
tether

$1.000343 USD

-0.03%

xrp
xrp

$2.252855 USD

3.38%

bnb
bnb

$602.185977 USD

0.02%

solana
solana

$146.346959 USD

-0.63%

usd-coin
usd-coin

$1.000013 USD

-0.01%

dogecoin
dogecoin

$0.177703 USD

-1.16%

cardano
cardano

$0.697358 USD

-1.11%

tron
tron

$0.245113 USD

-2.74%

sui
sui

$3.522709 USD

-2.79%

chainlink
chainlink

$14.667769 USD

-0.49%

avalanche
avalanche

$21.472475 USD

-3.60%

stellar
stellar

$0.284731 USD

-2.25%

unus-sed-leo
unus-sed-leo

$9.077708 USD

0.32%

暗号通貨のニュース記事

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

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_

残り_

免責事項:info@kdj.com

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

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

2025年04月28日 に掲載されたその他の記事