Some checks failed
Create and publish Docker images with specific build args / build-main-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-main-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-cuda126-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-ollama-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/amd64, ubuntu-latest) (push) Has been cancelled
Create and publish Docker images with specific build args / build-slim-image (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Create and publish Docker images with specific build args / merge-main-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-cuda126-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-ollama-images (push) Has been cancelled
Create and publish Docker images with specific build args / merge-slim-images (push) Has been cancelled
Python CI / Format Backend (3.11.x) (push) Has been cancelled
Python CI / Format Backend (3.12.x) (push) Has been cancelled
Frontend Build / Format & Build Frontend (push) Has been cancelled
Frontend Build / Frontend Unit Tests (push) Has been cancelled
Close inactive issues / close-issues (push) Has been cancelled
32 lines
1.0 KiB
Python
32 lines
1.0 KiB
Python
import re
|
|
|
|
|
|
def extract_mentions(message: str, triggerChar: str = "@"):
|
|
# Escape triggerChar in case it's a regex special character
|
|
triggerChar = re.escape(triggerChar)
|
|
pattern = rf"<{triggerChar}([A-Z]):([^|>]+)"
|
|
|
|
matches = re.findall(pattern, message)
|
|
return [{"id_type": id_type, "id": id_value} for id_type, id_value in matches]
|
|
|
|
|
|
def replace_mentions(message: str, triggerChar: str = "@", use_label: bool = True):
|
|
"""
|
|
Replace mentions in the message with either their label (after the pipe `|`)
|
|
or their id if no label exists.
|
|
|
|
Example:
|
|
"<@M:gpt-4.1|GPT-4>" -> "GPT-4" (if use_label=True)
|
|
"<@M:gpt-4.1|GPT-4>" -> "gpt-4.1" (if use_label=False)
|
|
"""
|
|
# Escape triggerChar
|
|
triggerChar = re.escape(triggerChar)
|
|
|
|
def replacer(match):
|
|
id_type, id_value, label = match.groups()
|
|
return label if use_label and label else id_value
|
|
|
|
# Regex captures: idType, id, optional label
|
|
pattern = rf"<{triggerChar}([A-Z]):([^|>]+)(?:\|([^>]+))?>"
|
|
return re.sub(pattern, replacer, message)
|